(* [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 -> term
  | noncea_old : term -> 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
  | session_old : term -> term -> term -> term
  | sym : term
.

(* [modd] Model definition. *)

Inductive auto__q2 : term -> Prop :=
    trans__q2_s_1 : forall X1:term, auto__q2 X1 -> auto__q2 (s X1)
  | trans__q2_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 (key X1 X2)
  | trans__q2_key_2 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 (key X1 X2)
  | trans__q2_crypt_1 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_crypt_2 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_crypt_3 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_crypt_4 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 (crypt X1 X2)
  | trans__q2_noncea_current_1 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X2)
  | trans__q2_noncea_current_2 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X2)
  | trans__q2_noncea_current_3 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (noncea_current X1 X2)
  | trans__q2_sym_1 : auto__q2 sym
  | trans__q2_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_cons_2 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_cons_3 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X1 X2)
  | trans__q2_nonceb_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (nonceb_current X1 X2 X3)
  | trans__q2_nonceb_current_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 (nonceb_current X1 X2 X3)
  | trans__q2_nonceb_current_3 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 (nonceb_current X1 X2 X3)
  | trans__q2_nonceb_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (nonceb_current X1 X2 X3)
  | trans__q2_nonceb_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_7 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_12 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_13 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_15 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_16 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_18 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_nonceb_old_19 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (nonceb_old X1 X2 X3)
  | trans__q2_noncea_old_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_2 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_3 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_4 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_5 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_6 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_7 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 (noncea_old X1 X2)
  | trans__q2_noncea_old_8 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 (noncea_old X1 X2)
with auto__q4 : term -> Prop :=
    trans__q4_s_1 : forall X1:term, auto__q4 X1 -> auto__q4 (s X1)
  | trans__q4_s_2 : forall X1:term, auto__q3 X1 -> auto__q4 (s X1)
  | trans__q4_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 (key X1 X2)
  | trans__q4_key_2 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 (key X1 X2)
  | trans__q4_session_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_2 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_3 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_6 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_10 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_11 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_14 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_15 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_16 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_19 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_20 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_21 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_22 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_24 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_25 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_26 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_27 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_29 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_session_current_31 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 (session_current X1 X2 X3)
  | trans__q4_crypt_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_crypt_2 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_crypt_3 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_crypt_4 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_crypt_5 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_crypt_6 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 (crypt X1 X2)
  | trans__q4_noncea_current_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_8 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_9 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_10 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_11 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_12 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_noncea_current_13 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 (noncea_current X1 X2)
  | trans__q4_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_cons_2 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_cons_3 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_cons_4 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_cons_5 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_cons_6 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 (cons X1 X2)
  | trans__q4_nonceb_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_4 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_5 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_7 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_8 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_12 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_16 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_17 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 (nonceb_current X1 X2 X3)
  | trans__q4_nonceb_current_18 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (nonceb_current X1 X2 X3)
with auto__q3 : term -> Prop :=
    trans__q3_key_1 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 (key X1 X2)
  | trans__q3_session_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_4 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_5 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_6 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_7 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_14 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_16 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_18 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_20 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_21 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_22 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_session_current_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_current X1 X2 X3)
  | trans__q3_crypt_1 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 (crypt X1 X2)
  | trans__q3_crypt_2 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 (crypt X1 X2)
  | trans__q3_cons_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_4 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_5 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_cons_6 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 (cons X1 X2)
  | trans__q3_nonceb_current_1 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_nonceb_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_nonceb_current_3 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_nonceb_current_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_nonceb_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_nonceb_current_6 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (nonceb_current X1 X2 X3)
  | trans__q3_session_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_5 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_11 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_13 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_15 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_16 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_17 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_18 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_20 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_21 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_22 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_23 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_27 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_29 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_30 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_31 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_32 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_34 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_35 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_37 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_38 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_39 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_40 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_41 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_42 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_43 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_44 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_45 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_46 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_47 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_48 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_49 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_50 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_51 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_52 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_53 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_54 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_55 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_56 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_57 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_58 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_59 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_60 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_61 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_62 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_63 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3)
  | trans__q3_session_old_64 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3)
with auto_agent : term -> Prop :=
    trans_agent_server_1 : auto_agent server
  | trans_agent_s_1 : forall X1:term, auto__q1 X1 -> auto_agent (s X1)
  | trans_agent_nil_1 : auto_agent nil
  | trans_agent_i_1 : auto_agent i
  | trans_agent_bob_1 : auto_agent bob
  | trans_agent_prv_1 : auto_agent prv
  | trans_agent_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_5 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_6 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_7 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_8 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_9 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_10 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (key X1 X2)
  | trans_agent_key_11 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_agent (key X1 X2)
  | trans_agent_session_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_session_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (session_current X1 X2 X3)
  | trans_agent_crypt_1 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_2 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (crypt X1 X2)
  | trans_agent_pub_1 : auto_agent pub
  | trans_agent_cons_1 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (cons X1 X2)
  | trans_agent_nonceb_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_4 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_14 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_16 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_20 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_23 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_25 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_26 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_27 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_31 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_32 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_34 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_nonceb_current_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_current X1 X2 X3)
  | trans_agent_alice_1 : auto_agent alice
  | trans_agent_nonceb_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_5 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_12 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_14 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_18 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_20 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_25 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_28 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_31 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_32 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_33 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_34 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_37 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_38 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_39 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_40 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_41 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_42 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_43 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_44 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_nonceb_old_45 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_agent (nonceb_old X1 X2 X3)
  | trans_agent_noncea_old_1 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_2 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_5 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_6 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_7 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_agent (noncea_old X1 X2)
  | trans_agent_noncea_old_8 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_agent (noncea_old X1 X2)
with auto_knows_current : term -> Prop :=
    trans_knows_current_server_1 : auto_knows_current server
  | trans_knows_current_s_1 : forall X1:term, auto__q2 X1 -> auto_knows_current (s X1)
  | trans_knows_current_s_2 : forall X1:term, auto__q1 X1 -> auto_knows_current (s X1)
  | trans_knows_current_nil_1 : auto_knows_current nil
  | trans_knows_current_i_1 : auto_knows_current i
  | trans_knows_current_bob_1 : auto_knows_current bob
  | trans_knows_current_prv_1 : auto_knows_current prv
  | trans_knows_current_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_6 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_7 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_8 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_9 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_10 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_11 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_12 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_key_13 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2)
  | trans_knows_current_session_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_session_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3)
  | trans_knows_current_crypt_1 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_2 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_5 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_6 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_7 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_crypt_8 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt X1 X2)
  | trans_knows_current_noncea_current_1 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_current X1 X2)
  | trans_knows_current_noncea_current_2 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_current X1 X2)
  | trans_knows_current_noncea_current_3 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_current X1 X2)
  | trans_knows_current_sym_1 : auto_knows_current sym
  | trans_knows_current_pub_1 : auto_knows_current pub
  | trans_knows_current_cons_1 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_cons_2 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_cons_3 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_cons_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2)
  | trans_knows_current_nonceb_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_4 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_11 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_12 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_14 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_15 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_16 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_17 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_18 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_20 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_24 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_26 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_27 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_28 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_30 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_31 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_32 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_34 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_35 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_36 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_37 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_38 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_39 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_nonceb_current_40 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3)
  | trans_knows_current_alice_1 : auto_knows_current alice
  | trans_knows_current_nonceb_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_3 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_5 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_8 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_9 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_11 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_13 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_14 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_15 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_16 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_17 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_18 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_19 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_20 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_21 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_22 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_23 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_24 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_25 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_27 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_29 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_30 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_31 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_32 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_34 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_35 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_37 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_38 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_39 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_40 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_41 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_42 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_43 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_44 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_45 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_46 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_47 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_48 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_49 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_50 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_51 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_52 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_53 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_54 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_55 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_56 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_57 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_58 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_59 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_60 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_61 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_62 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_63 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_nonceb_old_64 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)
  | trans_knows_current_noncea_old_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_8 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_9 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_10 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_11 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_12 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_13 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_14 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_15 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2)
  | trans_knows_current_noncea_old_16 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2)
with auto_knows_old : term -> Prop :=
    trans_knows_old_server_1 : auto_knows_old server
  | trans_knows_old_s_1 : forall X1:term, auto__q1 X1 -> auto_knows_old (s X1)
  | trans_knows_old_nil_1 : auto_knows_old nil
  | trans_knows_old_i_1 : auto_knows_old i
  | trans_knows_old_bob_1 : auto_knows_old bob
  | trans_knows_old_prv_1 : auto_knows_old prv
  | trans_knows_old_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_5 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_6 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_7 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_8 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_9 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_10 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_key_11 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2)
  | trans_knows_old_session_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_session_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3)
  | trans_knows_old_crypt_1 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_2 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2)
  | trans_knows_old_pub_1 : auto_knows_old pub
  | trans_knows_old_cons_1 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2)
  | trans_knows_old_nonceb_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_4 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_14 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_16 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_20 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_23 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_25 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_26 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_27 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_31 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_32 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_34 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_nonceb_current_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3)
  | trans_knows_old_alice_1 : auto_knows_old alice
  | trans_knows_old_nonceb_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_5 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_12 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_14 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_18 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_20 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_25 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_28 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_31 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_32 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_33 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_34 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_37 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_38 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_39 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_40 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_41 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_42 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_43 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_44 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_nonceb_old_45 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3)
  | trans_knows_old_noncea_old_1 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_2 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_5 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_6 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_7 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2)
  | trans_knows_old_noncea_old_8 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (noncea_old X1 X2)
with auto_bob_key_old : term -> term -> Prop :=
    trans_bob_key_old_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_8 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_9 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_10 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_11 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_12 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_13 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_14 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_15 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_old X1 X2
  | trans_bob_key_old_16 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_old X1 X2
with auto__q1 : term -> Prop :=
    trans__q1_server_1 : auto__q1 server
  | trans__q1_s_1 : forall X1:term, auto__q1 X1 -> auto__q1 (s X1)
  | trans__q1_nil_1 : auto__q1 nil
  | trans__q1_i_1 : auto__q1 i
  | trans__q1_bob_1 : auto__q1 bob
  | trans__q1_prv_1 : auto__q1 prv
  | trans__q1_key_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_5 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_6 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_7 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_8 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_9 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_10 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key X1 X2)
  | trans__q1_key_11 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2)
  | trans__q1_session_current_1 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_2 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_4 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_6 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_7 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_session_current_10 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3)
  | trans__q1_crypt_1 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_crypt_2 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_crypt_3 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_crypt_4 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (crypt X1 X2)
  | trans__q1_pub_1 : auto__q1 pub
  | trans__q1_cons_1 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X1 X2)
  | trans__q1_nonceb_current_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_2 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_4 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_5 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_10 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_11 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_12 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_13 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_14 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_16 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_17 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_18 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_20 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_23 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_25 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_26 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_27 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_28 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_31 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_32 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_33 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_34 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_nonceb_current_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3)
  | trans__q1_alice_1 : auto__q1 alice
  | trans__q1_nonceb_old_1 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_2 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_3 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_4 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_5 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_6 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_7 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_8 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_9 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_10 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_11 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_12 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_13 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_14 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_15 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_16 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_17 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_18 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_19 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_20 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_21 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_22 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_23 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_24 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_25 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_26 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_27 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_28 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_29 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_30 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_31 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_32 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_33 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_34 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_35 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_36 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_37 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_38 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_39 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_40 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_41 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_42 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_43 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_44 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_nonceb_old_45 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3)
  | trans__q1_noncea_old_1 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_2 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_3 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_5 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_6 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_7 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2)
  | trans__q1_noncea_old_8 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (noncea_old X1 X2)
with auto_alice_key_current : term -> term -> Prop :=
    trans_alice_key_current_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_8 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_9 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_10 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_11 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_12 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_13 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2
  | trans_alice_key_current_14 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2
with auto_alice_key_old : term -> term -> Prop :=
    trans_alice_key_old_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_8 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_9 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_10 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_11 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_12 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_13 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_14 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_15 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_old X1 X2
  | trans_alice_key_old_16 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_alice_key_old X1 X2
with auto_bob_key_current : term -> term -> Prop :=
    trans_bob_key_current_1 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_2 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_3 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_4 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_5 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_6 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_7 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_8 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_9 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_10 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_11 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_12 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_13 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_14 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_15 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2
  | trans_bob_key_current_16 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2
with auto___query__intruder_knows_session_key_generated_by_server : Prop :=
with auto___query__intruder_knows_session_key_as_seen_by_alice : Prop :=
.

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


(* [appp] Proofs that all approximation clauses hold. *)


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

Remark rem_2 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_server_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

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

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

Remark rem_4 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent server -> auto__q1 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_3 H);  intros.
  apply (rem_2 epsilon_magent_p_q1);  tauto.
Defined.

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

Remark rem_6 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1. intros A1.
  cut (auto__q1 X1). 2:apply (rem_5 epsilon_magent_p_q1 X1);  assumption.
  tauto.
Defined.

Remark rem_7 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1. intros A1.
  case (rem_6 epsilon_magent_p_q1 X1 A1). clear  epsilon_magent_p_q1 A1. intros. apply trans__q1_s_1;  tauto.
 clear  epsilon_magent_p_q1 A1. tauto.
Defined.

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

Remark rem_9 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto_agent (s X1) -> auto__q1 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1. intro H. intros.
  elim (rem_8 X1 H);  intros.
  apply (rem_7 epsilon_magent_p_q1 X1);  tauto.
Defined.

Remark rem_10 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_nil_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

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

Remark rem_12 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent nil -> auto__q1 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_11 H);  intros.
  apply (rem_10 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_13 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_i_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

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

Remark rem_15 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent i -> auto__q1 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_14 H);  intros.
  apply (rem_13 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_16 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_bob_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

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

Remark rem_18 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent bob -> auto__q1 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_17 H);  intros.
  apply (rem_16 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_19 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_prv_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

Remark rem_20 : auto_agent prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_21 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent prv -> auto__q1 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_20 H);  intros.
  apply (rem_19 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_22 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto__q3 X1 -> auto__q3 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_23 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_24 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X2:term, auto__q4 X2 -> auto__q4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_25 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_26 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_23 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_25 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_27 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_26 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_28 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto__q4 X1 -> auto__q4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_29 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_30 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X2:term, auto__q2 X2 -> auto__q2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_31 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_32 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_29 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_31 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_33 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_32 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_34 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_35 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_36 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_34 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_35 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_37 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_36 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_38 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_39 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_40 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X2:term, auto__q3 X2 -> auto__q3 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_41 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_42 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_39 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_41 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_43 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_42 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_44 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_45 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_46 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_44 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_45 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_47 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_46 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_5;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_48 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_49 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_50 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_48 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_49 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_51 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_50 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_6;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_52 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_53 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_54 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_52 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_53 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_55 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_54 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_7;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_56 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_57 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_58 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_56 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_57 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_59 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_58 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_8;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_60 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_61 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_62 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_60 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_61 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_63 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_62 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_9;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_64 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

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

Remark rem_66 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_67 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_64 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_66 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_68 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_67 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_10;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_69 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_70 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_71 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_69 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_70 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_72 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_71 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_key_11;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

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

Remark rem_73 : forall X1 X2:term, auto_agent (key X1 X2) -> or_11
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_74 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto_agent (key X1 X2) -> auto__q1 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intro H. intros.
  elim (rem_73 X1 X2 H);  intros.
  apply (rem_27 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_33 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_37 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_43 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_47 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_51 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_55 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_59 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_63 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_68 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_72 epsilon_magent_p_q1 X1 X2);  tauto.
Defined.

Remark rem_75 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_76 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_77 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X3:term, auto__q3 X3 -> auto__q3 X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_78 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_79 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_75 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_76 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_78 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_80 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_79 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_81 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_82 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_83 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X3:term, auto__q1 X3 -> auto__q1 X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_84 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_85 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_81 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_82 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_84 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_86 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_85 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_87 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_88 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_89 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X3:term, auto__q4 X3 -> auto__q4 X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_90 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_91 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_87 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_88 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_90 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_92 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_91 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_93 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_94 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_95 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X3:term, auto__q2 X3 -> auto__q2 X3. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_96 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_97 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_93 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_94 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_96 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_98 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_97 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_99 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_100 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_101 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_102 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_99 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_100 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_101 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_103 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_102 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_5;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_104 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_105 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_106 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_107 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_104 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_105 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_106 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_108 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_107 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_6;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_109 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_110 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_111 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_112 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_109 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_110 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_111 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_113 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_112 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_7;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_114 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_115 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_116 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_117 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_114 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_115 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_116 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_118 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_117 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_8;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_119 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_120 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_121 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_122 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_119 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_120 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_121 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_123 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_122 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_9;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_124 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_125 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_126 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_127 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_124 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_125 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_126 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_128 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_127 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_10;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Inductive or_10(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10:Prop) : Prop :=
    or_10_intro_1 : H1 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_2 : H2 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_3 : H3 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_4 : H4 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_5 : H5 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_6 : H6 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_7 : H7 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_8 : H8 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_9 : H9 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
  | or_10_intro_10 : H10 -> (or_10 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10)
.

Remark rem_129 : forall X1 X2 X3:term, auto_agent (session_current X1 X2 X3) -> or_10
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_10_intro_1; tauto.
  intros. apply or_10_intro_2; tauto.
  intros. apply or_10_intro_3; tauto.
  intros. apply or_10_intro_4; tauto.
  intros. apply or_10_intro_5; tauto.
  intros. apply or_10_intro_6; tauto.
  intros. apply or_10_intro_7; tauto.
  intros. apply or_10_intro_8; tauto.
  intros. apply or_10_intro_9; tauto.
  intros. apply or_10_intro_10; tauto.
Qed.

Remark rem_130 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_agent (session_current X1 X2 X3) -> auto__q1 (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_129 X1 X2 X3 H);  intros.
  apply (rem_80 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_86 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_92 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_98 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_103 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_108 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_113 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_118 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_123 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_128 epsilon_magent_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_131 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_36 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_crypt_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_132 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_50 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_crypt_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_133 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_134 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_135 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_133 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_134 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_136 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_135 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_crypt_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_137 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_67 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_crypt_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

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

Remark rem_138 : forall X1 X2:term, auto_agent (crypt X1 X2) -> or_4
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_139 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto__q1 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intro H. intros.
  elim (rem_138 X1 X2 H);  intros.
  apply (rem_131 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_132 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_136 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_137 epsilon_magent_p_q1 X1 X2);  tauto.
Defined.

Remark rem_140 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_pub_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

Remark rem_141 : auto_agent pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_142 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent pub -> auto__q1 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_141 H);  intros.
  apply (rem_140 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_143 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_67 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_cons_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

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

Remark rem_145 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto__q1 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intro H. intros.
  elim (rem_144 X1 X2 H);  intros.
  apply (rem_143 epsilon_magent_p_q1 X1 X2);  tauto.
Defined.

Remark rem_146 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_147 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_148 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_149 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_146 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_147 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_148 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_150 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_149 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_151 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_152 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_153 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_154 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_151 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_152 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_153 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_155 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_154 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_156 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_79 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_157 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_158 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_159 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_160 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_157 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_158 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_159 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_161 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_160 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_162 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_163 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_164 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_165 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_162 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_163 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_164 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_166 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_165 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_5;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_167 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_168 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_169 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_170 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_167 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_168 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_169 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_171 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_170 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_6;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_172 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_173 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_174 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_175 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_172 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_173 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_174 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_176 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_175 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_7;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_177 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_178 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_179 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_180 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_177 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_178 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_179 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_181 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_180 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_8;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_182 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_183 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_184 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_185 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_182 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_183 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_184 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_186 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_185 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_9;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_187 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_188 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_189 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_190 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_187 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_188 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_189 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_191 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_190 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_10;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_192 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_85 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_11;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_193 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_194 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_195 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_196 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_193 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_194 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_195 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_197 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_196 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_12;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_198 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_91 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_199 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_200 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_201 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_202 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_199 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_200 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_201 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_203 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_202 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_14;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_204 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_205 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_206 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_207 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_204 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_205 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_206 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_208 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_207 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_15;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_209 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_97 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_16;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_210 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_102 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_17;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_211 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_212 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_213 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_214 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_211 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_212 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_213 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_215 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_214 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_18;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_216 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_107 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_19;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_217 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_218 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_219 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_220 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_217 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_218 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_219 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_221 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_220 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_20;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_222 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_223 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_224 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_225 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_222 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_223 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_224 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_226 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_225 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_21;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_227 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_112 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_22;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_228 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_229 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_230 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_231 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_228 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_229 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_230 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_232 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_231 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_23;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_233 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_234 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_235 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_236 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_233 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_234 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_235 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_237 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_236 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_24;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_238 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_239 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_240 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_241 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_238 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_239 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_240 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_242 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_241 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_25;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_243 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_244 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_245 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_246 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_243 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_244 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_245 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_247 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_246 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_26;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_248 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_249 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_250 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_251 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_248 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_249 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_250 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_252 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_251 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_27;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_253 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_254 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_255 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_256 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_253 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_254 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_255 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_257 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_256 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_28;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_258 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_259 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_260 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_261 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_258 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_259 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_260 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_262 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_261 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_29;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_263 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_264 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_265 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_266 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_263 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_264 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_265 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_267 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_266 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_30;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_268 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_269 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_270 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_271 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_268 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_269 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_270 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_272 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_271 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_31;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_273 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_122 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_32;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_274 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_127 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_33;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_275 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_276 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_277 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_278 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_275 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_276 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_277 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_279 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_278 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_34;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_280 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_281 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_282 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_283 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_280 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_281 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_282 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_284 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_283 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_35;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_285 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_286 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_287 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_288 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_285 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_286 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_287 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_289 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_288 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_36;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Inductive or_36(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36:Prop) : Prop :=
    or_36_intro_1 : H1 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_2 : H2 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_3 : H3 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_4 : H4 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_5 : H5 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_6 : H6 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_7 : H7 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_8 : H8 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_9 : H9 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_10 : H10 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_11 : H11 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_12 : H12 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_13 : H13 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_14 : H14 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_15 : H15 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_16 : H16 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_17 : H17 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_18 : H18 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_19 : H19 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_20 : H20 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_21 : H21 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_22 : H22 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_23 : H23 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_24 : H24 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_25 : H25 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_26 : H26 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_27 : H27 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_28 : H28 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_29 : H29 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_30 : H30 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_31 : H31 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_32 : H32 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_33 : H33 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_34 : H34 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_35 : H35 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
  | or_36_intro_36 : H36 -> (or_36 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36)
.

Remark rem_290 : forall X1 X2 X3:term, auto_agent (nonceb_current X1 X2 X3) -> or_36
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_36_intro_1; tauto.
  intros. apply or_36_intro_2; tauto.
  intros. apply or_36_intro_3; tauto.
  intros. apply or_36_intro_4; tauto.
  intros. apply or_36_intro_5; tauto.
  intros. apply or_36_intro_6; tauto.
  intros. apply or_36_intro_7; tauto.
  intros. apply or_36_intro_8; tauto.
  intros. apply or_36_intro_9; tauto.
  intros. apply or_36_intro_10; tauto.
  intros. apply or_36_intro_11; tauto.
  intros. apply or_36_intro_12; tauto.
  intros. apply or_36_intro_13; tauto.
  intros. apply or_36_intro_14; tauto.
  intros. apply or_36_intro_15; tauto.
  intros. apply or_36_intro_16; tauto.
  intros. apply or_36_intro_17; tauto.
  intros. apply or_36_intro_18; tauto.
  intros. apply or_36_intro_19; tauto.
  intros. apply or_36_intro_20; tauto.
  intros. apply or_36_intro_21; tauto.
  intros. apply or_36_intro_22; tauto.
  intros. apply or_36_intro_23; tauto.
  intros. apply or_36_intro_24; tauto.
  intros. apply or_36_intro_25; tauto.
  intros. apply or_36_intro_26; tauto.
  intros. apply or_36_intro_27; tauto.
  intros. apply or_36_intro_28; tauto.
  intros. apply or_36_intro_29; tauto.
  intros. apply or_36_intro_30; tauto.
  intros. apply or_36_intro_31; tauto.
  intros. apply or_36_intro_32; tauto.
  intros. apply or_36_intro_33; tauto.
  intros. apply or_36_intro_34; tauto.
  intros. apply or_36_intro_35; tauto.
  intros. apply or_36_intro_36; tauto.
Qed.

Remark rem_291 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_current X1 X2 X3) -> auto__q1 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_290 X1 X2 X3 H);  intros.
  apply (rem_150 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_155 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_156 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_161 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_166 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_171 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_176 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_181 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_186 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_191 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_192 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_197 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_198 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_203 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_208 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_209 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_210 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_215 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_216 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_221 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_226 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_227 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_232 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_237 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_242 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_247 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_252 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_257 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_262 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_267 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_272 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_273 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_274 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_279 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_284 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_289 epsilon_magent_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_292 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto__q1 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1.  case (rem_1 epsilon_magent_p_q1). clear  epsilon_magent_p_q1. intros. apply trans__q1_alice_1;  tauto.
 clear  epsilon_magent_p_q1. tauto.
Defined.

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

Remark rem_294 : (forall X:term, auto_agent X -> auto__q1 X)
    -> auto_agent alice -> auto__q1 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intro H. intros.
  elim (rem_293 H);  intros.
  apply (rem_292 epsilon_magent_p_q1);  tauto.
Defined.

Remark rem_295 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_149 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_296 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_297 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_298 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_299 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_296 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_297 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_298 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_300 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_299 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_301 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_79 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_302 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_303 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_304 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_305 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_302 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_303 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_304 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_306 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_305 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_307 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_160 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_5;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_308 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_170 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_6;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_309 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_175 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_7;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_310 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_180 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_8;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_311 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_185 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_312 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_313 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_314 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_315 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_312 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_313 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_314 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_316 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_315 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_10;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_317 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_318 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_319 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_77 epsilon_magent_p_q1 X3).
Defined.

Remark rem_320 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_317 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_318 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_319 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_321 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_320 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_11;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_322 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_190 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_12;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_323 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_324 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_325 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_326 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_323 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_324 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_325 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_327 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_326 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_13;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_328 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_329 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_330 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_331 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_328 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_329 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_330 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_332 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_331 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_14;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_333 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_334 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_335 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_336 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_333 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_334 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_335 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_337 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_336 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_15;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_338 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_196 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_16;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_339 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_91 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_17;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_340 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_207 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_18;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_341 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_102 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_19;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_342 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_214 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_20;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_343 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5 epsilon_magent_p_q1 X1).
Defined.

Remark rem_344 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_345 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_346 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_343 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_344 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_345 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_347 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_346 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_21;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_348 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_107 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_22;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_349 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_350 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_351 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_352 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_349 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_350 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_351 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_353 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_352 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_23;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_354 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_355 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_356 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_83 epsilon_magent_p_q1 X3).
Defined.

Remark rem_357 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_354 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_355 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_356 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_358 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_357 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_24;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_359 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_220 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_25;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_360 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_361 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_362 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_363 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_360 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_361 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_362 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_364 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_363 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_365 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_225 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_27;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_366 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_367 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_40 epsilon_magent_p_q1 X2).
Defined.

Remark rem_368 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_369 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_366 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_367 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_368 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_370 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_369 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_28;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_371 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_117 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_29;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_372 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_231 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_30;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_373 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_236 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_31;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_374 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_375 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_30 epsilon_magent_p_q1 X2).
Defined.

Remark rem_376 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_377 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_374 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_375 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_376 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_378 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_377 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_32;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_379 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_380 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_24 epsilon_magent_p_q1 X2).
Defined.

Remark rem_381 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_95 epsilon_magent_p_q1 X3).
Defined.

Remark rem_382 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_379 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_380 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_381 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_383 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_382 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_33;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_384 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_246 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_34;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_385 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_251 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_35;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_386 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_256 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_36;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_387 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_261 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_37;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_388 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_266 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_38;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_389 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_271 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_39;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_390 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_122 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_391 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_127 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_41;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_392 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_278 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_42;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_393 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_394 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_395 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_89 epsilon_magent_p_q1 X3).
Defined.

Remark rem_396 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_393 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_394 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_395 epsilon_magent_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_397 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_396 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_398 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_283 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_44;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_399 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_288 epsilon_magent_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_magent_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_45;  tauto.
 clear  epsilon_magent_p_q1 A1 A2 A3. tauto.
Defined.

Inductive or_45(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45:Prop) : Prop :=
    or_45_intro_1 : H1 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_2 : H2 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_3 : H3 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_4 : H4 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_5 : H5 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_6 : H6 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_7 : H7 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_8 : H8 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_9 : H9 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_10 : H10 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_11 : H11 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_12 : H12 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_13 : H13 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_14 : H14 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_15 : H15 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_16 : H16 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_17 : H17 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_18 : H18 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_19 : H19 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_20 : H20 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_21 : H21 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_22 : H22 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_23 : H23 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_24 : H24 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_25 : H25 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_26 : H26 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_27 : H27 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_28 : H28 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_29 : H29 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_30 : H30 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_31 : H31 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_32 : H32 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_33 : H33 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_34 : H34 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_35 : H35 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_36 : H36 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_37 : H37 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_38 : H38 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_39 : H39 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_40 : H40 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_41 : H41 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_42 : H42 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_43 : H43 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_44 : H44 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
  | or_45_intro_45 : H45 -> (or_45 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45)
.

Remark rem_400 : forall X1 X2 X3:term, auto_agent (nonceb_old X1 X2 X3) -> or_45
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_45_intro_1; tauto.
  intros. apply or_45_intro_2; tauto.
  intros. apply or_45_intro_3; tauto.
  intros. apply or_45_intro_4; tauto.
  intros. apply or_45_intro_5; tauto.
  intros. apply or_45_intro_6; tauto.
  intros. apply or_45_intro_7; tauto.
  intros. apply or_45_intro_8; tauto.
  intros. apply or_45_intro_9; tauto.
  intros. apply or_45_intro_10; tauto.
  intros. apply or_45_intro_11; tauto.
  intros. apply or_45_intro_12; tauto.
  intros. apply or_45_intro_13; tauto.
  intros. apply or_45_intro_14; tauto.
  intros. apply or_45_intro_15; tauto.
  intros. apply or_45_intro_16; tauto.
  intros. apply or_45_intro_17; tauto.
  intros. apply or_45_intro_18; tauto.
  intros. apply or_45_intro_19; tauto.
  intros. apply or_45_intro_20; tauto.
  intros. apply or_45_intro_21; tauto.
  intros. apply or_45_intro_22; tauto.
  intros. apply or_45_intro_23; tauto.
  intros. apply or_45_intro_24; tauto.
  intros. apply or_45_intro_25; tauto.
  intros. apply or_45_intro_26; tauto.
  intros. apply or_45_intro_27; tauto.
  intros. apply or_45_intro_28; tauto.
  intros. apply or_45_intro_29; tauto.
  intros. apply or_45_intro_30; tauto.
  intros. apply or_45_intro_31; tauto.
  intros. apply or_45_intro_32; tauto.
  intros. apply or_45_intro_33; tauto.
  intros. apply or_45_intro_34; tauto.
  intros. apply or_45_intro_35; tauto.
  intros. apply or_45_intro_36; tauto.
  intros. apply or_45_intro_37; tauto.
  intros. apply or_45_intro_38; tauto.
  intros. apply or_45_intro_39; tauto.
  intros. apply or_45_intro_40; tauto.
  intros. apply or_45_intro_41; tauto.
  intros. apply or_45_intro_42; tauto.
  intros. apply or_45_intro_43; tauto.
  intros. apply or_45_intro_44; tauto.
  intros. apply or_45_intro_45; tauto.
Qed.

Remark rem_401 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_old X1 X2 X3) -> auto__q1 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_400 X1 X2 X3 H);  intros.
  apply (rem_295 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_300 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_301 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_306 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_307 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_308 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_309 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_310 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_311 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_316 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_321 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_322 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_327 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_332 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_337 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_338 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_339 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_340 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_341 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_342 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_347 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_348 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_353 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_358 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_359 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_364 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_365 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_370 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_371 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_372 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_373 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_378 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_383 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_384 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_385 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_386 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_387 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_388 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_389 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_390 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_391 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_392 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_397 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_398 epsilon_magent_p_q1 X1 X2 X3);  tauto.
  apply (rem_399 epsilon_magent_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_402 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_32 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_1;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_403 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_42 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_2;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_404 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_22 epsilon_magent_p_q1 X1).
Defined.

Remark rem_405 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_406 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_404 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_405 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_407 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_406 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_3;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_408 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_38 epsilon_magent_p_q1 X1).
Defined.

Remark rem_409 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_410 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_408 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_409 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_411 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_410 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_4;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_412 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_135 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_5;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_413 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_28 epsilon_magent_p_q1 X1).
Defined.

Remark rem_414 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_65 epsilon_magent_p_q1 X2).
Defined.

Remark rem_415 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_413 epsilon_magent_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_414 epsilon_magent_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_416 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_415 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_6;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_417 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_67 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_7;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Remark rem_418 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intros A1 A2.
  case (rem_71 epsilon_magent_p_q1 X1 X2 A1 A2). clear  epsilon_magent_p_q1 A1 A2. intros. apply trans__q1_noncea_old_8;  tauto.
 clear  epsilon_magent_p_q1 A1 A2. tauto.
Defined.

Inductive or_8(H1 H2 H3 H4 H5 H6 H7 H8:Prop) : Prop :=
    or_8_intro_1 : H1 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_2 : H2 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_3 : H3 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_4 : H4 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_5 : H5 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_6 : H6 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_7 : H7 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
  | or_8_intro_8 : H8 -> (or_8 H1 H2 H3 H4 H5 H6 H7 H8)
.

Remark rem_419 : forall X1 X2:term, auto_agent (noncea_old X1 X2) -> or_8
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_8_intro_1; tauto.
  intros. apply or_8_intro_2; tauto.
  intros. apply or_8_intro_3; tauto.
  intros. apply or_8_intro_4; tauto.
  intros. apply or_8_intro_5; tauto.
  intros. apply or_8_intro_6; tauto.
  intros. apply or_8_intro_7; tauto.
  intros. apply or_8_intro_8; tauto.
Qed.

Remark rem_420 : (forall X:term, auto_agent X -> auto__q1 X)
    -> forall X1 X2:term, auto_agent (noncea_old X1 X2) -> auto__q1 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_p_q1. intros X1 X2. intro H. intros.
  elim (rem_419 X1 X2 H);  intros.
  apply (rem_402 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_403 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_407 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_411 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_412 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_416 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_417 epsilon_magent_p_q1 X1 X2);  tauto.
  apply (rem_418 epsilon_magent_p_q1 X1 X2);  tauto.
Defined.

Inductive or_0 : Prop :=
.

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

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

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

Remark rem_424 : forall X1:term, auto_agent X1 -> auto__q1 X1. (* Induct. *)
Proof.
  fix epsilon_magent_p_q1 1.
  intro X. case X.
  exact (rem_294 epsilon_magent_p_q1 ).
  exact (rem_18 epsilon_magent_p_q1 ).
  intros X1 X2;  exact (rem_145 epsilon_magent_p_q1 X1 X2).
  intros X1 X2;  exact (rem_139 epsilon_magent_p_q1 X1 X2).
  exact (rem_15 epsilon_magent_p_q1 ).
  intros X1 X2;  exact (rem_74 epsilon_magent_p_q1 X1 X2).
  exact (rem_12 epsilon_magent_p_q1 ).
  intros X1 X2. intro H. elim (rem_421 X1 X2 H).
  intros X1 X2;  exact (rem_420 epsilon_magent_p_q1 X1 X2).
  intros X1 X2 X3;  exact (rem_291 epsilon_magent_p_q1 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_401 epsilon_magent_p_q1 X1 X2 X3).
  exact (rem_21 epsilon_magent_p_q1 ).
  exact (rem_142 epsilon_magent_p_q1 ).
  intros X1;  exact (rem_9 epsilon_magent_p_q1 X1).
  exact (rem_4 epsilon_magent_p_q1 ).
  intros X1 X2 X3;  exact (rem_130 epsilon_magent_p_q1 X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_423 X1 X2 X3 H).
   intro H. elim (rem_422  H).
Qed.

Remark rem_425 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_agent X1 -> auto__q1 X1). tauto. exact (rem_424 X1).
Qed.

Remark rem_426 : forall X2:term, auto_agent X2 -> auto__q1 X2. (* Induct. *)
Proof.
  fix epsilon_magent_p_q1 1.
  intro X. case X.
  exact (rem_294 epsilon_magent_p_q1 ).
  exact (rem_18 epsilon_magent_p_q1 ).
  intros X1 X2;  exact (rem_145 epsilon_magent_p_q1 X1 X2).
  intros X1 X2;  exact (rem_139 epsilon_magent_p_q1 X1 X2).
  exact (rem_15 epsilon_magent_p_q1 ).
  intros X1 X2;  exact (rem_74 epsilon_magent_p_q1 X1 X2).
  exact (rem_12 epsilon_magent_p_q1 ).
  intros X1 X2. intro H. elim (rem_421 X1 X2 H).
  intros X1 X2;  exact (rem_420 epsilon_magent_p_q1 X1 X2).
  intros X1 X2 X3;  exact (rem_291 epsilon_magent_p_q1 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_401 epsilon_magent_p_q1 X1 X2 X3).
  exact (rem_21 epsilon_magent_p_q1 ).
  exact (rem_142 epsilon_magent_p_q1 ).
  intros X1;  exact (rem_9 epsilon_magent_p_q1 X1).
  exact (rem_4 epsilon_magent_p_q1 ).
  intros X1 X2 X3;  exact (rem_130 epsilon_magent_p_q1 X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_423 X1 X2 X3 H).
   intro H. elim (rem_422  H).
Qed.

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

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

Remark rem_429 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto__q2 (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_428 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q2_noncea_current_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_430 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  tauto.
Qed.

Remark rem_431 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_430 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q1_nil_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_432 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto__q2 (noncea_current X1 X2) /\ auto__q1 nil) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 (noncea_current X1 X2)). 2:apply (rem_429 X1 X2);  assumption.
  cut (auto__q1 nil). 2:apply (rem_431 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_433 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto__q2 (cons (noncea_current X1 X2) nil). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_432 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q2_cons_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_434 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto__q1 X2 /\ auto__q2 (cons (noncea_current X1 X2) nil)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X2). 2:apply (rem_427 X1 X2);  assumption.
  cut (auto__q2 (cons (noncea_current X1 X2) nil)). 2:apply (rem_433 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_435 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto__q2 (cons X2 (cons (noncea_current X1 X2) nil)). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_434 X1 X2 A1 A2). clear  A1 A2. intros. apply trans__q2_cons_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_436 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> (auto__q1 X1 /\ auto__q2 (cons X2 (cons (noncea_current X1 X2) nil))) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_425 X1 X2);  assumption.
  cut (auto__q2 (cons X2 (cons (noncea_current X1 X2) nil))). 2:apply (rem_435 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_437 : forall X1 X2:term, auto_agent X1 -> auto_agent X2 -> auto_knows_current (cons X1 (cons X2 (cons (noncea_current X1 X2) nil))). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_436 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_cons_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_438 : forall _big_a _big_b:term, auto_agent _big_b -> auto_agent _big_a -> auto_knows_current (cons _big_a (cons _big_b (cons (noncea_current _big_a _big_b) nil))). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_agent X1 -> auto_agent X2 -> auto_knows_current (cons X1 (cons X2 (cons (noncea_current X1 X2) nil)))). tauto. exact (rem_437 X1 X2).
Qed.

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

Remark rem_440 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1. intros A1.
  cut (auto__q2 X1). 2:apply (rem_439 epsilon_m_q2_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_441 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1:term, auto__q2 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1. intros A1.
  case (rem_440 epsilon_m_q2_pknows_current X1 A1). clear  epsilon_m_q2_pknows_current A1. intros. apply trans_knows_current_s_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1. tauto.
Defined.

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

Remark rem_443 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1:term, auto__q2 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1. intro H. intros.
  elim (rem_442 X1 H);  intros.
  apply (rem_441 epsilon_m_q2_pknows_current X1);  tauto.
Defined.

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

Remark rem_445 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

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

Remark rem_447 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_448 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_445 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_447 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_449 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_448 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_5;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_451 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_450 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_452 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_453 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_451 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_452 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_454 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_453 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_key_11;  tauto.
 clear  epsilon_m_q2_pknows_current 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_455 : forall X1 X2:term, auto__q2 (key X1 X2) -> or_2
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_456 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_455 X1 X2 H);  intros.
  apply (rem_449 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_454 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_457 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_450 epsilon_m_q2_pknows_current X1).
Defined.

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

Remark rem_459 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_460 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_457 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_459 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_461 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_460 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_462 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_463 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_464 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_462 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_463 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_465 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_464 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_466 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_450 epsilon_m_q2_pknows_current X1).
Defined.

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

Remark rem_468 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_469 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_466 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_468 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_470 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_469 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_471 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_450 epsilon_m_q2_pknows_current X1).
Defined.

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

Remark rem_473 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_474 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_471 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_473 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_475 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_474 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_crypt_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_476 : forall X1 X2:term, auto__q2 (crypt X1 X2) -> or_4
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q4 X1 /\ auto__q4 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_477 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_476 X1 X2 H);  intros.
  apply (rem_461 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_465 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_470 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_475 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_479 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_480 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_481 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_479 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_480 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_482 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_481 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_current_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_483 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_484 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_485 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_483 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_484 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_486 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_485 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_current_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_487 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_488 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_489 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_487 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_488 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_490 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_current X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_489 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_current_3;  tauto.
 clear  epsilon_m_q2_pknows_current 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_491 : forall X1 X2:term, auto__q2 (noncea_current X1 X2) -> or_3
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_492 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 (noncea_current X1 X2) -> auto_knows_current (noncea_current X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_491 X1 X2 H);  intros.
  apply (rem_482 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_486 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_490 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_494 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto_knows_current sym. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current.  case (rem_493 epsilon_m_q2_pknows_current). clear  epsilon_m_q2_pknows_current. intros. apply trans_knows_current_sym_1;  tauto.
 clear  epsilon_m_q2_pknows_current. tauto.
Defined.

Remark rem_495 : auto__q2 sym -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_496 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> auto__q2 sym -> auto_knows_current sym. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intro H. intros.
  elim (rem_495 H);  intros.
  apply (rem_494 epsilon_m_q2_pknows_current);  tauto.
Defined.

Remark rem_497 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_464 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_cons_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_498 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_481 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_cons_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_499 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_485 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_cons_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_500 : forall X1 X2:term, auto__q2 (cons X1 X2) -> or_3
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 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_501 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_500 X1 X2 H);  intros.
  apply (rem_497 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_498 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_499 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_502 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_503 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

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

Remark rem_505 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_504 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_506 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_502 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_503 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_505 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_507 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_506 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_11;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_508 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_509 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

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

Remark rem_511 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_510 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_512 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_508 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_509 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_511 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_513 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_512 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_15;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_514 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_515 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_516 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_510 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_517 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_514 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_515 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_516 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_518 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_517 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_18;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_519 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_520 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_521 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_504 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_522 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_519 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_520 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_521 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_523 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_522 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_28;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_524 : forall X1 X2 X3:term, auto__q2 (nonceb_current X1 X2 X3) -> or_4
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
.
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_525 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_524 X1 X2 X3 H);  intros.
  apply (rem_507 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_513 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_518 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_523 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_526 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_450 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_527 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

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

Remark rem_529 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_530 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_526 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_527 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_529 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_531 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_530 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_2;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_532 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_533 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_534 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_510 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_535 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_532 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_533 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_534 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_536 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_535 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_537 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_538 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_539 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_510 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_540 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_537 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_538 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_539 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_541 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_540 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_542 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_543 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_544 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_504 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_545 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_542 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_543 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_544 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_546 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_545 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_9;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_547 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_548 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

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

Remark rem_550 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_549 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_551 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_547 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_548 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_550 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_552 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_551 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_553 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_554 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_555 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_556 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_553 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_554 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_555 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_557 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_556 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_21;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_558 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_512 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_24;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_559 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_560 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_561 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_562 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_559 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_560 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_561 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_563 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_562 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_25;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_564 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_565 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_566 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_510 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_567 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_564 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_565 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_566 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_568 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_567 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_569 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_570 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_571 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_549 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_572 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_569 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_570 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_571 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_573 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_572 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_574 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_517 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_575 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_576 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_577 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_504 epsilon_m_q2_pknows_current X3).
Defined.

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

Remark rem_579 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_578 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_580 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_581 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_582 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_583 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_580 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_581 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_582 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_584 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_583 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_585 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_586 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_587 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_588 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_585 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_586 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_587 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_589 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_588 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_590 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_522 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_46;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_591 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_592 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_593 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_549 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_594 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_591 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_592 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_593 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_595 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_594 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_596 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_597 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_598 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_549 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_599 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_596 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_597 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_598 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_600 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_599 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_50;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_601 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_602 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_603 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_528 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_604 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_601 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_602 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_603 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_605 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_604 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_61;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_606 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_607 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_446 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_608 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_504 epsilon_m_q2_pknows_current X3).
Defined.

Remark rem_609 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_606 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_607 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_608 epsilon_m_q2_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_610 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_609 epsilon_m_q2_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q2_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_64;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2 A3. tauto.
Defined.

Inductive or_19(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19:Prop) : Prop :=
    or_19_intro_1 : H1 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_2 : H2 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_3 : H3 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_4 : H4 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_5 : H5 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_6 : H6 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_7 : H7 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_8 : H8 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_9 : H9 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_10 : H10 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_11 : H11 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_12 : H12 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_13 : H13 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_14 : H14 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_15 : H15 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_16 : H16 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_17 : H17 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_18 : H18 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
  | or_19_intro_19 : H19 -> (or_19 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19)
.

Remark rem_611 : forall X1 X2 X3:term, auto__q2 (nonceb_old X1 X2 X3) -> or_19
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_19_intro_1; tauto.
  intros. apply or_19_intro_2; tauto.
  intros. apply or_19_intro_3; tauto.
  intros. apply or_19_intro_4; tauto.
  intros. apply or_19_intro_5; tauto.
  intros. apply or_19_intro_6; tauto.
  intros. apply or_19_intro_7; tauto.
  intros. apply or_19_intro_8; tauto.
  intros. apply or_19_intro_9; tauto.
  intros. apply or_19_intro_10; tauto.
  intros. apply or_19_intro_11; tauto.
  intros. apply or_19_intro_12; tauto.
  intros. apply or_19_intro_13; tauto.
  intros. apply or_19_intro_14; tauto.
  intros. apply or_19_intro_15; tauto.
  intros. apply or_19_intro_16; tauto.
  intros. apply or_19_intro_17; tauto.
  intros. apply or_19_intro_18; tauto.
  intros. apply or_19_intro_19; tauto.
Qed.

Remark rem_612 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_611 X1 X2 X3 H);  intros.
  apply (rem_531 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_536 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_541 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_546 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_552 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_557 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_558 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_563 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_568 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_573 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_574 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_579 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_584 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_589 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_590 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_595 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_600 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_605 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
  apply (rem_610 epsilon_m_q2_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_613 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_614 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_615 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_613 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_614 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_616 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_615 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_617 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_618 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_619 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_617 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_618 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_620 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_619 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_3;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_621 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_622 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_458 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_623 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_621 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_622 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_624 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_623 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_7;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_625 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_481 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_8;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_626 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_439 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_627 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_472 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_628 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_626 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_627 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_629 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_628 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_9;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_630 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_469 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_10;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_631 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_478 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_632 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_633 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_631 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_632 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_634 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_633 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_11;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_635 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_444 epsilon_m_q2_pknows_current X1).
Defined.

Remark rem_636 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_467 epsilon_m_q2_pknows_current X2).
Defined.

Remark rem_637 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_635 epsilon_m_q2_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_636 epsilon_m_q2_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_638 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_637 epsilon_m_q2_pknows_current X1 X2 A1 A2). clear  epsilon_m_q2_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_12;  tauto.
 clear  epsilon_m_q2_pknows_current A1 A2. tauto.
Defined.

Remark rem_639 : forall X1 X2:term, auto__q2 (noncea_old X1 X2) -> or_8
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_8_intro_1; tauto.
  intros. apply or_8_intro_2; tauto.
  intros. apply or_8_intro_3; tauto.
  intros. apply or_8_intro_4; tauto.
  intros. apply or_8_intro_5; tauto.
  intros. apply or_8_intro_6; tauto.
  intros. apply or_8_intro_7; tauto.
  intros. apply or_8_intro_8; tauto.
Qed.

Remark rem_640 : (forall X:term, auto__q2 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 (noncea_old X1 X2) -> auto_knows_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q2_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_639 X1 X2 H);  intros.
  apply (rem_616 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_620 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_624 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_625 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_629 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_630 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_634 epsilon_m_q2_pknows_current X1 X2);  tauto.
  apply (rem_638 epsilon_m_q2_pknows_current X1 X2);  tauto.
Defined.

Remark rem_641 : auto__q2 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_642 : auto__q2 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_643 : auto__q2 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_644 : auto__q2 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_645 : auto__q2 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_647 : auto__q2 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_648 : auto__q2 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_650 : forall X1:term, auto__q2 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m_q2_pknows_current 1.
  intro X. case X.
   intro H. elim (rem_648  H).
   intro H. elim (rem_644  H).
  intros X1 X2;  exact (rem_501 epsilon_m_q2_pknows_current X1 X2).
  intros X1 X2;  exact (rem_477 epsilon_m_q2_pknows_current X1 X2).
   intro H. elim (rem_643  H).
  intros X1 X2;  exact (rem_456 epsilon_m_q2_pknows_current X1 X2).
   intro H. elim (rem_642  H).
  intros X1 X2;  exact (rem_492 epsilon_m_q2_pknows_current X1 X2).
  intros X1 X2;  exact (rem_640 epsilon_m_q2_pknows_current X1 X2).
  intros X1 X2 X3;  exact (rem_525 epsilon_m_q2_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_612 epsilon_m_q2_pknows_current X1 X2 X3).
   intro H. elim (rem_645  H).
   intro H. elim (rem_647  H).
  intros X1;  exact (rem_443 epsilon_m_q2_pknows_current X1).
   intro H. elim (rem_641  H).
  intros X1 X2 X3. intro H. elim (rem_646 X1 X2 X3 H).
  intros X1 X2 X3. intro H. elim (rem_649 X1 X2 X3 H).
  exact (rem_496 epsilon_m_q2_pknows_current ).
Qed.

Remark rem_651 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_650 X1).
Qed.

Remark rem_652 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto_knows_current X1). tauto. exact (rem_651 X1 X2).
Qed.

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

Remark rem_654 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_server_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_656 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 server -> auto_knows_current server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_655 H);  intros.
  apply (rem_654 epsilon_m_q1_pknows_current);  tauto.
Defined.

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

Remark rem_658 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1. intros A1.
  cut (auto__q1 X1). 2:apply (rem_657 epsilon_m_q1_pknows_current X1);  assumption.
  tauto.
Defined.

Remark rem_659 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1:term, auto__q1 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1. intros A1.
  case (rem_658 epsilon_m_q1_pknows_current X1 A1). clear  epsilon_m_q1_pknows_current A1. intros. apply trans_knows_current_s_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1. tauto.
Defined.

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

Remark rem_661 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1:term, auto__q1 (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1. intro H. intros.
  elim (rem_660 X1 H);  intros.
  apply (rem_659 epsilon_m_q1_pknows_current X1);  tauto.
Defined.

Remark rem_662 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_664 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_663 H);  intros.
  apply (rem_662 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_665 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_i_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_667 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 i -> auto_knows_current i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_666 H);  intros.
  apply (rem_665 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_668 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_bob_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_670 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 bob -> auto_knows_current bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_669 H);  intros.
  apply (rem_668 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_671 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_prv_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

Remark rem_672 : auto__q1 prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_673 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 prv -> auto_knows_current prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_672 H);  intros.
  apply (rem_671 epsilon_m_q1_pknows_current);  tauto.
Defined.

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

Remark rem_675 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

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

Remark rem_677 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_678 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_675 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_677 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_679 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_678 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_681 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

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

Remark rem_683 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_684 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_681 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_683 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_685 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_684 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_686 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_687 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_688 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_686 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_687 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_689 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_688 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_691 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

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

Remark rem_693 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_694 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_691 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_693 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_695 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_694 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_696 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_697 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_698 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_696 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_697 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_699 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_698 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_700 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_701 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_702 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_700 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_701 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_703 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_702 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_704 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_705 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_706 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_704 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_705 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_707 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_706 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_8;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_708 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_709 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_710 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_708 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_709 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_711 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_710 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_9;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_712 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_713 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_714 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_712 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_713 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_715 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_714 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_716 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

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

Remark rem_718 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_719 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_716 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_718 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_720 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_719 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_721 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_722 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_723 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_721 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_722 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_724 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_723 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_key_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_725 : forall X1 X2:term, auto__q1 (key X1 X2) -> or_11
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_726 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_725 X1 X2 H);  intros.
  apply (rem_679 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_685 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_689 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_695 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_699 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_703 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_707 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_711 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_715 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_720 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_724 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_727 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_728 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

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

Remark rem_730 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_731 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_727 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_728 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_730 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_732 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_731 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_733 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_734 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

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

Remark rem_736 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_737 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_733 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_734 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_736 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_738 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_737 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_739 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_740 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

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

Remark rem_742 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_743 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_739 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_740 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_742 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_744 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_743 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_745 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_746 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

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

Remark rem_748 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_749 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_745 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_746 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_748 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_750 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_749 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_751 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_752 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_753 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_754 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_751 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_752 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_753 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_755 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_754 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_756 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_757 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_758 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_759 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_756 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_757 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_758 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_760 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_759 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_761 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_762 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_763 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_764 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_761 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_762 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_763 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_765 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_764 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_766 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_767 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_768 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_769 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_766 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_767 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_768 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_770 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_769 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_8;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_771 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_772 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_773 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_774 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_771 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_772 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_773 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_775 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_774 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_9;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_776 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_777 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_778 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_779 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_776 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_777 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_778 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_780 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_779 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_781 : forall X1 X2 X3:term, auto__q1 (session_current X1 X2 X3) -> or_10
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_10_intro_1; tauto.
  intros. apply or_10_intro_2; tauto.
  intros. apply or_10_intro_3; tauto.
  intros. apply or_10_intro_4; tauto.
  intros. apply or_10_intro_5; tauto.
  intros. apply or_10_intro_6; tauto.
  intros. apply or_10_intro_7; tauto.
  intros. apply or_10_intro_8; tauto.
  intros. apply or_10_intro_9; tauto.
  intros. apply or_10_intro_10; tauto.
Qed.

Remark rem_782 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 (session_current X1 X2 X3) -> auto_knows_current (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_781 X1 X2 X3 H);  intros.
  apply (rem_732 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_738 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_744 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_750 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_755 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_760 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_765 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_770 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_775 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_780 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_783 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_688 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_784 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_702 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_785 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_786 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_787 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_785 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_786 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_788 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_787 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_789 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_719 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_790 : forall X1 X2:term, auto__q1 (crypt X1 X2) -> or_4
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_791 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_790 X1 X2 H);  intros.
  apply (rem_783 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_784 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_788 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_789 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_792 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_pub_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

Remark rem_793 : auto__q1 pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_794 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 pub -> auto_knows_current pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_793 H);  intros.
  apply (rem_792 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_795 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_719 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_cons_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_797 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_796 X1 X2 H);  intros.
  apply (rem_795 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

Remark rem_798 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_799 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_800 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_801 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_798 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_799 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_800 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_802 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_801 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_803 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_804 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_805 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_806 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_803 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_804 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_805 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_807 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_806 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_808 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_731 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_809 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_810 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_811 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_812 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_809 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_810 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_811 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_813 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_812 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_814 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_815 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_816 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_817 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_814 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_815 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_816 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_818 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_817 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_819 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_820 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_821 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_822 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_819 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_820 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_821 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_823 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_822 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_824 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_825 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_826 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_827 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_824 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_825 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_826 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_828 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_827 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_7;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_829 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_830 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_831 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_832 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_829 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_830 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_831 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_833 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_832 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_8;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_834 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_835 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_836 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_837 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_834 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_835 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_836 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_838 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_837 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_9;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_839 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_840 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_841 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_842 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_839 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_840 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_841 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_843 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_842 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_844 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_737 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_845 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_846 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_847 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_848 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_845 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_846 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_847 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_849 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_848 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_850 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_743 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_14;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_851 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_852 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_853 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_854 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_851 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_852 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_853 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_855 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_854 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_16;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_856 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_857 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_858 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_859 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_856 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_857 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_858 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_860 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_859 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_17;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_861 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_749 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_19;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_862 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_754 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_20;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_863 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_864 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_865 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_866 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_863 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_864 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_865 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_867 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_866 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_21;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_868 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_759 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_22;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_869 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_870 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_871 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_872 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_869 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_870 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_871 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_873 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_872 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_23;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_874 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_875 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_876 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_877 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_874 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_875 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_876 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_878 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_877 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_24;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_879 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_764 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_25;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_880 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_881 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_882 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_883 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_880 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_881 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_882 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_884 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_883 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_26;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_885 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_886 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_887 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_888 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_885 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_886 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_887 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_889 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_888 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_27;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_890 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_891 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_892 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_893 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_890 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_891 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_892 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_894 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_893 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_29;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_895 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_896 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_897 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_898 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_895 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_896 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_897 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_899 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_898 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_30;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_900 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_901 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_902 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_903 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_900 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_901 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_902 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_904 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_903 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_31;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_905 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_906 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_907 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_908 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_905 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_906 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_907 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_909 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_908 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_32;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_910 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_911 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_912 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_913 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_910 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_911 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_912 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_914 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_913 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_33;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_915 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_916 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_917 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_918 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_915 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_916 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_917 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_919 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_918 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_34;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_920 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_921 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_922 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_923 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_920 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_921 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_922 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_924 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_923 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_35;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_925 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_774 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_36;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_926 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_779 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_37;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_927 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_928 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_929 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_930 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_927 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_928 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_929 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_931 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_930 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_38;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_932 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_933 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_934 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_935 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_932 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_933 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_934 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_936 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_935 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_39;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_937 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_938 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_939 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_940 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_937 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_938 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_939 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_941 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_940 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_40;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_942 : forall X1 X2 X3:term, auto__q1 (nonceb_current X1 X2 X3) -> or_36
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_36_intro_1; tauto.
  intros. apply or_36_intro_2; tauto.
  intros. apply or_36_intro_3; tauto.
  intros. apply or_36_intro_4; tauto.
  intros. apply or_36_intro_5; tauto.
  intros. apply or_36_intro_6; tauto.
  intros. apply or_36_intro_7; tauto.
  intros. apply or_36_intro_8; tauto.
  intros. apply or_36_intro_9; tauto.
  intros. apply or_36_intro_10; tauto.
  intros. apply or_36_intro_11; tauto.
  intros. apply or_36_intro_12; tauto.
  intros. apply or_36_intro_13; tauto.
  intros. apply or_36_intro_14; tauto.
  intros. apply or_36_intro_15; tauto.
  intros. apply or_36_intro_16; tauto.
  intros. apply or_36_intro_17; tauto.
  intros. apply or_36_intro_18; tauto.
  intros. apply or_36_intro_19; tauto.
  intros. apply or_36_intro_20; tauto.
  intros. apply or_36_intro_21; tauto.
  intros. apply or_36_intro_22; tauto.
  intros. apply or_36_intro_23; tauto.
  intros. apply or_36_intro_24; tauto.
  intros. apply or_36_intro_25; tauto.
  intros. apply or_36_intro_26; tauto.
  intros. apply or_36_intro_27; tauto.
  intros. apply or_36_intro_28; tauto.
  intros. apply or_36_intro_29; tauto.
  intros. apply or_36_intro_30; tauto.
  intros. apply or_36_intro_31; tauto.
  intros. apply or_36_intro_32; tauto.
  intros. apply or_36_intro_33; tauto.
  intros. apply or_36_intro_34; tauto.
  intros. apply or_36_intro_35; tauto.
  intros. apply or_36_intro_36; tauto.
Qed.

Remark rem_943 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_942 X1 X2 X3 H);  intros.
  apply (rem_802 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_807 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_808 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_813 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_818 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_823 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_828 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_833 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_838 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_843 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_844 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_849 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_850 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_855 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_860 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_861 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_862 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_867 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_868 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_873 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_878 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_879 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_884 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_889 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_894 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_899 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_904 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_909 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_914 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_919 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_924 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_925 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_926 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_931 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_936 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_941 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_944 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto_knows_current alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current.  case (rem_653 epsilon_m_q1_pknows_current). clear  epsilon_m_q1_pknows_current. intros. apply trans_knows_current_alice_1;  tauto.
 clear  epsilon_m_q1_pknows_current. tauto.
Defined.

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

Remark rem_946 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> auto__q1 alice -> auto_knows_current alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intro H. intros.
  elim (rem_945 H);  intros.
  apply (rem_944 epsilon_m_q1_pknows_current);  tauto.
Defined.

Remark rem_947 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_801 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_948 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_949 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_950 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_951 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_948 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_949 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_950 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_952 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_951 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_953 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_731 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_954 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_955 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_956 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_957 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_954 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_955 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_956 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_958 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_957 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_959 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_812 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_960 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_822 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_961 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_827 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_962 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_832 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_963 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_837 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_964 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_965 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_966 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_967 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_964 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_965 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_966 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_968 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_967 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_969 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_970 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_971 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_729 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_972 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_969 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_970 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_971 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_973 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_972 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_974 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_842 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_975 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_976 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_977 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_978 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_975 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_976 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_977 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_979 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_978 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_980 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_981 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_982 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_983 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_980 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_981 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_982 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_984 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_983 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_985 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_986 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_987 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_988 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_985 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_986 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_987 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_989 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_988 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_990 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_848 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_991 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_743 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_992 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_859 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_993 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_754 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_994 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_866 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_995 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_657 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_996 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_997 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_998 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_995 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_996 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_997 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_999 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_998 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1000 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_759 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1001 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1002 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1003 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1004 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1001 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1002 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1003 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1005 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1004 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1006 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1007 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1008 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_735 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1009 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1006 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1007 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1008 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1010 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1009 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1011 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_872 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1012 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1013 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1014 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1015 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1012 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1013 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1014 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1016 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1015 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1017 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_877 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1018 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1019 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_692 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1020 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1021 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1018 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1019 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1020 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1022 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1021 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1023 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_769 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1024 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_883 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1025 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_888 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1026 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1027 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_682 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1028 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1029 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1026 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1027 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1028 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1030 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1029 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1031 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1032 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_676 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1033 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_747 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1034 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1031 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1032 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1033 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1035 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1034 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1036 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_898 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1037 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_903 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1038 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_908 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1039 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_913 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1040 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_918 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1041 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_923 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1042 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_774 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1043 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_779 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1044 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_930 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1045 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1046 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1047 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_741 epsilon_m_q1_pknows_current X3).
Defined.

Remark rem_1048 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1045 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1046 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1047 epsilon_m_q1_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_1049 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1048 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1050 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_935 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1051 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_940 epsilon_m_q1_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_1052 : forall X1 X2 X3:term, auto__q1 (nonceb_old X1 X2 X3) -> or_45
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_45_intro_1; tauto.
  intros. apply or_45_intro_2; tauto.
  intros. apply or_45_intro_3; tauto.
  intros. apply or_45_intro_4; tauto.
  intros. apply or_45_intro_5; tauto.
  intros. apply or_45_intro_6; tauto.
  intros. apply or_45_intro_7; tauto.
  intros. apply or_45_intro_8; tauto.
  intros. apply or_45_intro_9; tauto.
  intros. apply or_45_intro_10; tauto.
  intros. apply or_45_intro_11; tauto.
  intros. apply or_45_intro_12; tauto.
  intros. apply or_45_intro_13; tauto.
  intros. apply or_45_intro_14; tauto.
  intros. apply or_45_intro_15; tauto.
  intros. apply or_45_intro_16; tauto.
  intros. apply or_45_intro_17; tauto.
  intros. apply or_45_intro_18; tauto.
  intros. apply or_45_intro_19; tauto.
  intros. apply or_45_intro_20; tauto.
  intros. apply or_45_intro_21; tauto.
  intros. apply or_45_intro_22; tauto.
  intros. apply or_45_intro_23; tauto.
  intros. apply or_45_intro_24; tauto.
  intros. apply or_45_intro_25; tauto.
  intros. apply or_45_intro_26; tauto.
  intros. apply or_45_intro_27; tauto.
  intros. apply or_45_intro_28; tauto.
  intros. apply or_45_intro_29; tauto.
  intros. apply or_45_intro_30; tauto.
  intros. apply or_45_intro_31; tauto.
  intros. apply or_45_intro_32; tauto.
  intros. apply or_45_intro_33; tauto.
  intros. apply or_45_intro_34; tauto.
  intros. apply or_45_intro_35; tauto.
  intros. apply or_45_intro_36; tauto.
  intros. apply or_45_intro_37; tauto.
  intros. apply or_45_intro_38; tauto.
  intros. apply or_45_intro_39; tauto.
  intros. apply or_45_intro_40; tauto.
  intros. apply or_45_intro_41; tauto.
  intros. apply or_45_intro_42; tauto.
  intros. apply or_45_intro_43; tauto.
  intros. apply or_45_intro_44; tauto.
  intros. apply or_45_intro_45; tauto.
Qed.

Remark rem_1053 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1052 X1 X2 X3 H);  intros.
  apply (rem_947 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_952 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_953 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_958 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_959 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_960 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_961 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_962 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_963 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_968 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_973 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_974 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_979 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_984 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_989 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_990 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_991 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_992 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_993 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_994 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_999 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1000 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1005 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1010 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1011 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1016 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1017 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1022 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1023 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1024 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1025 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1030 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1035 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1036 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1037 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1038 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1039 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1040 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1041 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1042 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1043 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1044 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1049 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1050 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
  apply (rem_1051 epsilon_m_q1_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1054 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_684 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1055 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_694 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1056 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_674 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1057 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1058 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_1056 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1057 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1059 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1058 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1060 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_690 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1061 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1062 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_1060 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1061 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1063 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1062 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1064 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_787 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1065 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_680 epsilon_m_q1_pknows_current X1).
Defined.

Remark rem_1066 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_717 epsilon_m_q1_pknows_current X2).
Defined.

Remark rem_1067 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_1065 epsilon_m_q1_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1066 epsilon_m_q1_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_1068 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_1067 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1069 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_719 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1070 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_723 epsilon_m_q1_pknows_current X1 X2 A1 A2). clear  epsilon_m_q1_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  epsilon_m_q1_pknows_current A1 A2. tauto.
Defined.

Remark rem_1071 : forall X1 X2:term, auto__q1 (noncea_old X1 X2) -> or_8
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_8_intro_1; tauto.
  intros. apply or_8_intro_2; tauto.
  intros. apply or_8_intro_3; tauto.
  intros. apply or_8_intro_4; tauto.
  intros. apply or_8_intro_5; tauto.
  intros. apply or_8_intro_6; tauto.
  intros. apply or_8_intro_7; tauto.
  intros. apply or_8_intro_8; tauto.
Qed.

Remark rem_1072 : (forall X:term, auto__q1 X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 (noncea_old X1 X2) -> auto_knows_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_1071 X1 X2 H);  intros.
  apply (rem_1054 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1055 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1059 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1063 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1064 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1068 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1069 epsilon_m_q1_pknows_current X1 X2);  tauto.
  apply (rem_1070 epsilon_m_q1_pknows_current X1 X2);  tauto.
Defined.

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

Remark rem_1074 : auto__q1 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_1076 : forall X1:term, auto__q1 X1 -> auto_knows_current X1. (* Induct. *)
Proof.
  fix epsilon_m_q1_pknows_current 1.
  intro X. case X.
  exact (rem_946 epsilon_m_q1_pknows_current ).
  exact (rem_670 epsilon_m_q1_pknows_current ).
  intros X1 X2;  exact (rem_797 epsilon_m_q1_pknows_current X1 X2).
  intros X1 X2;  exact (rem_791 epsilon_m_q1_pknows_current X1 X2).
  exact (rem_667 epsilon_m_q1_pknows_current ).
  intros X1 X2;  exact (rem_726 epsilon_m_q1_pknows_current X1 X2).
  exact (rem_664 epsilon_m_q1_pknows_current ).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_1072 epsilon_m_q1_pknows_current X1 X2).
  intros X1 X2 X3;  exact (rem_943 epsilon_m_q1_pknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_1053 epsilon_m_q1_pknows_current X1 X2 X3).
  exact (rem_673 epsilon_m_q1_pknows_current ).
  exact (rem_794 epsilon_m_q1_pknows_current ).
  intros X1;  exact (rem_661 epsilon_m_q1_pknows_current X1).
  exact (rem_656 epsilon_m_q1_pknows_current ).
  intros X1 X2 X3;  exact (rem_782 epsilon_m_q1_pknows_current X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_1075 X1 X2 X3 H).
   intro H. elim (rem_1074  H).
Qed.

Remark rem_1077 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_current X1). tauto. exact (rem_1076 X1).
Qed.

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

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

Remark rem_1080 : forall X1 X2:term, auto_knows_current (cons X1 X2) -> or_4
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_1081 : 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_1080 X1 X2 H);  intros.
  apply (rem_652 X1 X2);  tauto.
  apply (rem_1077 X1 X2);  tauto.
  apply (rem_1078 X1 X2);  tauto.
  apply (rem_1079 X1 X2);  tauto.
Qed.

Remark rem_1082 : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current (cons X1 X2) -> auto_knows_current X1). tauto. exact (rem_1081 X1 X2).
Qed.
Hint Constructors auto__q2 : h1mc_states_hint.
Hint Constructors auto__q4 : h1mc_states_hint.
Hint Constructors auto__q3 : h1mc_states_hint.
Hint Constructors auto__q1 : h1mc_states_hint.

Remark rem_1083 : forall X3:term, auto__q2 X3 \/ auto__q4 X3 \/ auto__q3 X3 \/ auto__q1 X3. (* Check universal disjunction. *)
Proof.
 induction X3;  intuition auto with h1mc_states_hint.
Qed.

Remark rem_1084 : forall X2:term, auto__q2 X2 \/ auto__q4 X2 \/ auto__q3 X2 \/ auto__q1 X2. (* Check universal disjunction. *)
Proof.
 induction X2;  intuition auto with h1mc_states_hint.
Qed.

Remark rem_1085 : forall X1:term, auto__q2 X1 \/ auto__q4 X1 \/ auto__q3 X1 \/ auto__q1 X1. (* Check universal disjunction. *)
Proof.
 induction X1;  intuition auto with h1mc_states_hint.
Qed.

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

Remark rem_1087 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

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

Remark rem_1089 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

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

Remark rem_1091 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1092 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1087 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1089 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1091 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1093 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1092 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_1095 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1096 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1097 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1098 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1095 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1096 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1097 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1099 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1098 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1100 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1099 X1 X2 X3).
Qed.

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

Remark rem_1102 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1103 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1104 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1105 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1102 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1103 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1104 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1106 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1105 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1107 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1106 X1 X2 X3).
Qed.

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

Remark rem_1109 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1110 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1111 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1112 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1109 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1110 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1111 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1113 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1112 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1114 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1093 X1 X2 X3)). tauto.
  assert (HH:=(rem_1100 X1 X2 X3)). tauto.
  assert (HH:=(rem_1107 X1 X2 X3)). tauto.
  assert (HH:=(rem_1113 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1115 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

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

Remark rem_1117 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1118 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1119 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1115 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1117 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1118 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1120 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1119 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_30;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1121 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1122 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1123 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1124 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1121 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1122 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1123 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1125 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1124 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1126 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1125 X1 X2 X3).
Qed.

Remark rem_1127 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1128 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1129 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1130 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1127 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1128 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1129 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1131 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1130 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1132 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1131 X1 X2 X3).
Qed.

Remark rem_1133 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1134 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1135 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1136 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1133 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1134 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1135 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1137 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1136 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1138 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1120 X1 X2 X3)). tauto.
  assert (HH:=(rem_1126 X1 X2 X3)). tauto.
  assert (HH:=(rem_1132 X1 X2 X3)). tauto.
  assert (HH:=(rem_1137 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1139 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1138 X1 X2 X3).
Qed.

Remark rem_1140 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

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

Remark rem_1142 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1143 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1144 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1140 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1142 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1143 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1145 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1144 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_46;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1146 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1147 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1148 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1149 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1146 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1147 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1148 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1150 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1149 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1151 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1150 X1 X2 X3).
Qed.

Remark rem_1152 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1153 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1154 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1155 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1152 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1153 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1154 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1156 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1155 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1157 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1156 X1 X2 X3).
Qed.

Remark rem_1158 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1159 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1160 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1161 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1158 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1159 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1160 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1162 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1161 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1163 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1145 X1 X2 X3)). tauto.
  assert (HH:=(rem_1151 X1 X2 X3)). tauto.
  assert (HH:=(rem_1157 X1 X2 X3)). tauto.
  assert (HH:=(rem_1162 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1164 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1163 X1 X2 X3).
Qed.

Remark rem_1165 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

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

Remark rem_1167 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1168 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1169 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1165 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1167 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1168 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1170 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1169 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1171 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1170 X1 X2 X3).
Qed.

Remark rem_1172 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1173 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1174 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1175 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1172 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1173 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1174 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1176 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1175 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1177 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1176 X1 X2 X3).
Qed.

Remark rem_1178 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1179 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1180 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1181 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1178 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1179 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1180 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1182 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1181 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_64;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1183 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1182 X1 X2 X3).
Qed.

Remark rem_1184 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1185 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1186 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_1187 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1184 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1185 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_1186 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1188 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1187 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1189 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1171 X1 X2 X3)). tauto.
  assert (HH:=(rem_1177 X1 X2 X3)). tauto.
  assert (HH:=(rem_1183 X1 X2 X3)). tauto.
  assert (HH:=(rem_1188 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1190 : forall X1 X2 X3:term, auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_1114 X1 X2 X3)). tauto.
  assert (HH:=(rem_1139 X1 X2 X3)). tauto.
  assert (HH:=(rem_1164 X1 X2 X3)). tauto.
  assert (HH:=(rem_1189 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_1191 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1192 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

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

Remark rem_1194 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1195 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1191 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1192 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1194 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1196 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1195 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_27;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1197 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1198 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1199 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1200 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1197 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1198 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1199 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1201 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1200 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1202 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1201 X1 X2 X3).
Qed.

Remark rem_1203 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1204 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1205 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1206 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1203 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1204 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1205 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1207 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1206 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1208 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1207 X1 X2 X3).
Qed.

Remark rem_1209 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1210 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1211 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1212 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1209 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1210 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1211 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1213 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1212 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1214 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1196 X1 X2 X3)). tauto.
  assert (HH:=(rem_1202 X1 X2 X3)). tauto.
  assert (HH:=(rem_1208 X1 X2 X3)). tauto.
  assert (HH:=(rem_1213 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1215 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1216 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1217 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1218 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1215 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1216 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1217 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1219 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1218 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1220 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1221 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1222 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1223 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1220 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1221 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1222 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1224 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1223 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1225 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1226 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1227 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1228 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1225 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1226 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1227 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1229 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1228 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1230 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1231 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1232 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1233 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1230 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1231 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1232 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1234 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1233 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1235 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1219 X1 X2 X3)). tauto.
  assert (HH:=(rem_1224 X1 X2 X3)). tauto.
  assert (HH:=(rem_1229 X1 X2 X3)). tauto.
  assert (HH:=(rem_1234 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1236 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1237 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1238 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1239 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1236 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1237 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1238 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1240 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1239 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1241 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1242 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1243 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1244 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1241 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1242 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1243 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1245 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1244 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1246 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1245 X1 X2 X3).
Qed.

Remark rem_1247 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1248 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1249 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1250 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1247 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1248 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1249 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1251 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1250 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1252 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1253 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1254 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1255 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1252 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1253 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1254 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1256 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1255 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1257 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1240 X1 X2 X3)). tauto.
  assert (HH:=(rem_1246 X1 X2 X3)). tauto.
  assert (HH:=(rem_1251 X1 X2 X3)). tauto.
  assert (HH:=(rem_1256 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1258 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1259 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1260 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1261 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1258 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1259 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1260 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1262 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1261 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1263 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1262 X1 X2 X3).
Qed.

Remark rem_1264 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1265 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1266 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1267 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1264 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1265 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1266 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1268 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1267 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1269 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1268 X1 X2 X3).
Qed.

Remark rem_1270 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1271 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1272 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1273 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1270 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1271 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1272 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1274 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1273 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_48;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1275 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1274 X1 X2 X3).
Qed.

Remark rem_1276 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1277 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1278 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_1193 X3).
Qed.

Remark rem_1279 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1276 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1277 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_1278 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1280 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1279 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_50;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1281 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1263 X1 X2 X3)). tauto.
  assert (HH:=(rem_1269 X1 X2 X3)). tauto.
  assert (HH:=(rem_1275 X1 X2 X3)). tauto.
  assert (HH:=(rem_1280 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1282 : forall X1 X2 X3:term, auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_1214 X1 X2 X3)). tauto.
  assert (HH:=(rem_1235 X1 X2 X3)). tauto.
  assert (HH:=(rem_1257 X1 X2 X3)). tauto.
  assert (HH:=(rem_1281 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_1283 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1284 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

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

Remark rem_1286 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1287 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1283 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1284 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1286 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1288 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1287 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1289 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1290 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1291 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1292 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1289 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1290 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1291 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1293 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1292 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1294 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1293 X1 X2 X3).
Qed.

Remark rem_1295 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1296 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1297 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1298 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1295 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1296 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1297 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1299 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1298 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1300 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1299 X1 X2 X3).
Qed.

Remark rem_1301 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1302 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1303 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1304 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1301 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1302 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1303 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1305 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1304 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1306 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1288 X1 X2 X3)). tauto.
  assert (HH:=(rem_1294 X1 X2 X3)). tauto.
  assert (HH:=(rem_1300 X1 X2 X3)). tauto.
  assert (HH:=(rem_1305 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1307 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1308 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1309 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1310 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1307 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1308 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1309 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1311 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1310 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1312 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1313 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1314 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1315 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1312 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1313 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1314 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1316 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1315 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1317 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1316 X1 X2 X3).
Qed.

Remark rem_1318 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1319 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1320 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1321 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1318 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1319 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1320 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1322 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1321 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_24;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1323 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1324 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1325 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1326 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1323 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1324 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1325 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1327 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1326 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1328 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1311 X1 X2 X3)). tauto.
  assert (HH:=(rem_1317 X1 X2 X3)). tauto.
  assert (HH:=(rem_1322 X1 X2 X3)). tauto.
  assert (HH:=(rem_1327 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1329 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1328 X1 X2 X3).
Qed.

Remark rem_1330 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1331 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1332 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1333 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1330 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1331 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1332 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1334 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1333 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_29;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1335 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1336 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1337 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1338 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1335 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1336 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1337 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1339 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1338 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1340 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1339 X1 X2 X3).
Qed.

Remark rem_1341 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1342 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1343 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1344 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1341 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1342 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1343 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1345 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1344 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1346 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1347 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1348 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1349 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1346 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1347 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1348 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1350 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1349 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1351 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1334 X1 X2 X3)). tauto.
  assert (HH:=(rem_1340 X1 X2 X3)). tauto.
  assert (HH:=(rem_1345 X1 X2 X3)). tauto.
  assert (HH:=(rem_1350 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1352 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1353 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1354 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1355 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1352 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1353 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1354 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1356 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1355 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_26;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1357 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1356 X1 X2 X3).
Qed.

Remark rem_1358 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1359 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1360 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1361 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1358 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1359 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1360 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1362 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1361 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1363 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1362 X1 X2 X3).
Qed.

Remark rem_1364 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1365 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1366 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1367 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1364 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1365 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1366 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1368 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1367 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1369 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1368 X1 X2 X3).
Qed.

Remark rem_1370 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1371 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1372 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_1373 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1370 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1371 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_1372 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1374 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1373 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1375 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1357 X1 X2 X3)). tauto.
  assert (HH:=(rem_1363 X1 X2 X3)). tauto.
  assert (HH:=(rem_1369 X1 X2 X3)). tauto.
  assert (HH:=(rem_1374 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1376 : forall X1 X2 X3:term, auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_1306 X1 X2 X3)). tauto.
  assert (HH:=(rem_1329 X1 X2 X3)). tauto.
  assert (HH:=(rem_1351 X1 X2 X3)). tauto.
  assert (HH:=(rem_1375 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_1377 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1378 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

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

Remark rem_1380 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1381 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1377 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1378 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1380 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1382 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1381 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_25;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1383 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1382 X1 X2 X3).
Qed.

Remark rem_1384 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1385 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1386 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1387 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1384 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1385 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1386 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1388 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1387 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1389 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1388 X1 X2 X3).
Qed.

Remark rem_1390 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1391 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1392 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1393 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1390 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1391 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1392 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1394 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1393 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1395 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1394 X1 X2 X3).
Qed.

Remark rem_1396 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1397 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1398 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1399 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1396 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1397 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1398 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1400 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1399 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1401 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1383 X1 X2 X3)). tauto.
  assert (HH:=(rem_1389 X1 X2 X3)). tauto.
  assert (HH:=(rem_1395 X1 X2 X3)). tauto.
  assert (HH:=(rem_1400 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1402 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1401 X1 X2 X3).
Qed.

Remark rem_1403 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1404 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1405 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1406 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1403 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1404 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1405 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1407 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1406 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_41;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1408 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1407 X1 X2 X3).
Qed.

Remark rem_1409 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1410 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1411 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1412 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1409 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1410 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1411 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1413 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1412 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1414 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1413 X1 X2 X3).
Qed.

Remark rem_1415 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1416 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1417 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1418 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1415 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1416 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1417 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1419 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1418 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1420 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1419 X1 X2 X3).
Qed.

Remark rem_1421 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1422 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1423 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1424 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1421 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1422 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1423 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1425 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1424 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1426 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1408 X1 X2 X3)). tauto.
  assert (HH:=(rem_1414 X1 X2 X3)). tauto.
  assert (HH:=(rem_1420 X1 X2 X3)). tauto.
  assert (HH:=(rem_1425 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1427 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1426 X1 X2 X3).
Qed.

Remark rem_1428 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1429 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1430 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1431 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1428 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1429 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1430 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1432 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1431 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_21;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1433 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1432 X1 X2 X3).
Qed.

Remark rem_1434 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1435 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1436 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1437 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1434 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1435 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1436 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1438 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1437 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1439 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1438 X1 X2 X3).
Qed.

Remark rem_1440 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1441 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1442 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1443 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1440 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1441 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1442 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1444 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1443 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_61;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1445 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1444 X1 X2 X3).
Qed.

Remark rem_1446 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1447 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1448 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1449 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1446 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1447 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1448 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1450 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1449 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1451 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1433 X1 X2 X3)). tauto.
  assert (HH:=(rem_1439 X1 X2 X3)). tauto.
  assert (HH:=(rem_1445 X1 X2 X3)). tauto.
  assert (HH:=(rem_1450 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1452 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1451 X1 X2 X3).
Qed.

Remark rem_1453 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1454 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1455 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1456 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1453 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1454 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1455 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1457 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1456 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1458 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1457 X1 X2 X3).
Qed.

Remark rem_1459 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1460 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1461 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1462 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1459 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1460 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1461 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1463 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1462 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1464 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1463 X1 X2 X3).
Qed.

Remark rem_1465 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1466 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1467 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1468 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1465 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1466 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1467 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1469 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1468 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_44;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1470 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1469 X1 X2 X3).
Qed.

Remark rem_1471 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1472 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1473 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_1474 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1471 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1472 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_1473 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_1475 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1474 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1476 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1458 X1 X2 X3)). tauto.
  assert (HH:=(rem_1464 X1 X2 X3)). tauto.
  assert (HH:=(rem_1470 X1 X2 X3)). tauto.
  assert (HH:=(rem_1475 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1477 : forall X1 X2 X3:term, auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_1402 X1 X2 X3)). tauto.
  assert (HH:=(rem_1427 X1 X2 X3)). tauto.
  assert (HH:=(rem_1452 X1 X2 X3)). tauto.
  assert (HH:=(rem_1476 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1478 : forall X1 X2 X3:term, auto_knows_current (nonceb_old X1 X2 X3). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X3) (auto__q4 X3) (auto__q3 X3) (auto__q1 X3)). intro H. elim H.
  assert (HH:=(rem_1190 X1 X2 X3)). tauto.
  assert (HH:=(rem_1282 X1 X2 X3)). tauto.
  assert (HH:=(rem_1376 X1 X2 X3)). tauto.
  assert (HH:=(rem_1477 X1 X2 X3)). tauto.
  assert (HH:=(rem_1083 X3)). intuition auto with or_4_hint.
Qed.

Remark rem_1479 : forall _big_a _big_b _big_kab:term, auto_knows_current (nonceb_old _big_kab _big_a _big_b). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X1.
  cut (auto_knows_current (nonceb_old X1 X2 X3)). tauto. exact (rem_1478 X1 X2 X3).
Qed.

Remark rem_1480 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1481 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1480 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1482 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1481 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1483 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1484 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_1482 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1483 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1485 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1484 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1486 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1487 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1486 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1488 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1487 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1489 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1490 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_1488 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1489 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1491 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1490 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1492 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1493 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1492 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1494 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1493 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1495 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1496 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q2 (s X1) /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 (s X1)). 2:apply (rem_1494 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1495 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1497 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1496 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1498 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1499 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1498 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1500 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1499 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1501 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1502 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_1500 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1501 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_1503 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_1502 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_1504 : forall X1 X2:term, auto_knows_old (crypt X1 X2) -> or_4
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_1505 : forall X1 X2 X3 X4 X5:term, auto_knows_old (crypt X1 X2) -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1504 X1 X2 H);  intros.
  apply (rem_1485 X1 X2 X3 X4 X5);  tauto.
  apply (rem_1491 X1 X2 X3 X4 X5);  tauto.
  apply (rem_1497 X1 X2 X3 X4 X5);  tauto.
  apply (rem_1503 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_1506 : forall _big_a _big_b _big_kab _big_msg _big_nb:term, auto_knows_old (crypt (cons (noncea_old _big_a _big_b) (cons _big_b (cons _big_kab (cons _big_msg nil)))) (key sym (cons _big_a (cons server nil)))) -> auto_knows_old (crypt _big_nb _big_kab) -> auto_knows_old (crypt (s _big_nb) _big_kab). (* Prove equivalent, normalized clause. *)
Proof.
   intros X3 X4 X2 X5 X1.
  cut (auto_knows_old (crypt X1 X2) -> auto_knows_old (crypt (cons (noncea_old X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (s X1) X2)). tauto. exact (rem_1505 X1 X2 X3 X4 X5).
Qed.

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

Remark rem_1508 : auto__q1 prv. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans__q1_prv_1;  tauto.
 tauto.
Qed.

Remark rem_1509 : auto__q1 i. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans__q1_i_1;  tauto.
 tauto.
Qed.

Remark rem_1510 : (auto__q1 prv /\ auto__q1 i) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
   cut (auto__q1 prv). 2:apply rem_1508.
  cut (auto__q1 i). 2:apply rem_1509.
  tauto.
Qed.

Remark rem_1511 : auto_knows_current (key prv i). (* Deduce positive atom. *)
Proof.
   case rem_1510. intros. apply trans_knows_current_key_12;  tauto.
 tauto.
Qed.

Remark rem_1512 : auto_agent server. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans_agent_server_1;  tauto.
 tauto.
Qed.

Remark rem_1513 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1514 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1515 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_1513 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1514 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1516 : forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1515 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1517 : forall X1 X2:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1518 : forall X1 X2:term, auto__q2 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1519 : forall X1 X2:term, auto__q2 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_1517 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1518 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1520 : forall X1 X2:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1519 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1521 : forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1520 X1 X2).
Qed.

Remark rem_1522 : forall X1 X2:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1523 : forall X1 X2:term, auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1524 : forall X1 X2:term, auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_1522 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1523 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1525 : forall X1 X2:term, auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1524 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_7;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1526 : forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1525 X1 X2).
Qed.

Remark rem_1527 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1528 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_1529 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_1527 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1528 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1530 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1529 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_8;  tauto.
 clear  A1 A2. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1531 : forall X1 X2:term, auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Cut. *)
Proof.
  intros X1 X2.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1516 X1 X2)). tauto.
  assert (HH:=(rem_1521 X1 X2)). tauto.
  assert (HH:=(rem_1526 X1 X2)). tauto.
  assert (HH:=(rem_1530 X1 X2)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1532 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1533 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1534 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_1532 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1533 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1535 : forall X1 X2:term, auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1534 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_9;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1536 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1537 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1538 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_1536 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1537 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1539 : forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1538 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1540 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1541 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1542 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_1540 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1541 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1543 : forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1542 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_1;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1544 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1545 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_1546 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_1544 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1545 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1547 : forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1546 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_3;  tauto.
 clear  A1 A2. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1548 : forall X1 X2:term, auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Cut. *)
Proof.
  intros X1 X2.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1535 X1 X2)). tauto.
  assert (HH:=(rem_1539 X1 X2)). tauto.
  assert (HH:=(rem_1543 X1 X2)). tauto.
  assert (HH:=(rem_1547 X1 X2)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1549 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1550 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1551 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_1549 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1550 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1552 : forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1551 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1553 : forall X1 X2:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1554 : forall X1 X2:term, auto__q3 X2 -> auto__q4 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1555 : forall X1 X2:term, auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_1553 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1554 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1556 : forall X1 X2:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1555 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_10;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1557 : forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1556 X1 X2).
Qed.

Remark rem_1558 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1559 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1560 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_1558 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1559 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1561 : forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1560 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_12;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1562 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1563 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_1564 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_1562 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1563 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1565 : forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1564 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_11;  tauto.
 clear  A1 A2. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1566 : forall X1 X2:term, auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Cut. *)
Proof.
  intros X1 X2.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1552 X1 X2)). tauto.
  assert (HH:=(rem_1557 X1 X2)). tauto.
  assert (HH:=(rem_1561 X1 X2)). tauto.
  assert (HH:=(rem_1565 X1 X2)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_1567 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_1568 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1569 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_1567 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1568 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1570 : forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1569 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1571 : forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1570 X1 X2).
Qed.

Remark rem_1572 : forall X1 X2:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_1573 : forall X1 X2:term, auto__q1 X2 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1574 : forall X1 X2:term, auto__q1 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_1572 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1573 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1575 : forall X1 X2:term, auto__q1 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1574 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1576 : forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1575 X1 X2).
Qed.

Remark rem_1577 : forall X1 X2:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_1578 : forall X1 X2:term, auto__q1 X2 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1579 : forall X1 X2:term, auto__q1 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_1577 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1578 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1580 : forall X1 X2:term, auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1579 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_1581 : forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1580 X1 X2).
Qed.

Remark rem_1582 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_1583 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_1584 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_1582 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1583 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_1585 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2.
  case (rem_1584 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  A1 A2. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1586 : forall X1 X2:term, auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Cut. *)
Proof.
  intros X1 X2.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_1571 X1 X2)). tauto.
  assert (HH:=(rem_1576 X1 X2)). tauto.
  assert (HH:=(rem_1581 X1 X2)). tauto.
  assert (HH:=(rem_1585 X1 X2)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_1587 : forall X1 X2:term, auto_knows_current (noncea_old X1 X2). (* Cut. *)
Proof.
  intros X1 X2.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_1531 X1 X2)). tauto.
  assert (HH:=(rem_1548 X1 X2)). tauto.
  assert (HH:=(rem_1566 X1 X2)). tauto.
  assert (HH:=(rem_1586 X1 X2)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_1588 : forall _big_a _big_b:term, auto_knows_current (noncea_old _big_a _big_b). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto_knows_current (noncea_old X1 X2)). tauto. exact (rem_1587 X1 X2).
Qed.

Inductive model_1 : Set := und_1:model_1 | val_1_1:model_1 | val_1_2:model_1 | val_1_3:model_1 | val_1_4:model_1.

Definition seval_1_model_server : model_1 := val_1_2.

Remark seval_1_rewrite_server:seval_1_model_server=seval_1_model_server.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_s (v1 : model_1) : model_1 :=
  match v1 with
      val_1_1 => val_1_1
    | val_1_2 => val_1_2
    | val_1_3 => val_1_3
    | val_1_4 => val_1_1
    | _ => und_1
    end.

Remark seval_1_rewrite_s:forall X1 X2:model_1, X1=X2 -> (seval_1_model_s X1)=(seval_1_model_s X2).
Proof.
  intros X1 X2 H1. rewrite H1. reflexivity.
Qed.
Definition seval_1_model_nil : model_1 := val_1_2.

Remark seval_1_rewrite_nil:seval_1_model_nil=seval_1_model_nil.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_i : model_1 := val_1_2.

Remark seval_1_rewrite_i:seval_1_model_i=seval_1_model_i.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_bob : model_1 := val_1_2.

Remark seval_1_rewrite_bob:seval_1_model_bob=seval_1_model_bob.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_prv : model_1 := val_1_2.

Remark seval_1_rewrite_prv:seval_1_model_prv=seval_1_model_prv.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_key (v1 v2 : model_1) : model_1 :=
  match v1,v2 with
      val_1_3,val_1_4 => val_1_2
    | val_1_1,val_1_1 => val_1_2
    | val_1_3,val_1_2 => val_1_1
    | val_1_1,val_1_4 => val_1_2
    | val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3 => val_1_1
    | val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_3 => val_1_2
    | val_1_3,val_1_1 => val_1_4
    | val_1_4,val_1_4 => val_1_2
    | val_1_4,val_1_2 => val_1_3
    | val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_4 => val_1_2
    | val_1_4,val_1_1 => val_1_2
    | val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_3 => val_1_2
    | _,_ => und_1
    end.

Remark seval_1_rewrite_key:forall X1 X2 X3 X4:model_1, X1=X3 -> X2=X4 -> (seval_1_model_key X1 X2)=(seval_1_model_key X3 X4).
Proof.
  intros X1 X2 X3 X4 H1 H2. rewrite H1. rewrite H2. reflexivity.
Qed.
Definition seval_1_model_session_current (v1 v2 v3 : model_1) : model_1 :=
  match v1,v2,v3 with
      val_1_2,val_1_4,val_1_3 => val_1_4
    | val_1_2,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_3,val_1_2 => val_1_1
    | val_1_4,val_1_2,val_1_2 => val_1_1
    | val_1_1,val_1_4,val_1_2 => val_1_1
    | val_1_1,val_1_3,val_1_1 => val_1_4
    | val_1_1,val_1_1,val_1_2 => val_1_4
    | val_1_2,val_1_1,val_1_2 => val_1_4
    | val_1_1,val_1_2,val_1_4 => val_1_4
    | val_1_2,val_1_1,val_1_1 => val_1_4
    | val_1_2,val_1_4,val_1_2 => val_1_4
    | val_1_3,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_4 => val_1_1
    | val_1_4,val_1_3,val_1_4 => val_1_1
    | val_1_4,val_1_1,val_1_2 => val_1_4
    | val_1_3,val_1_4,val_1_3 => val_1_1
    | val_1_4,val_1_4,val_1_1 => val_1_4
    | val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_3,val_1_2,val_1_1 => val_1_1
    | val_1_3,val_1_3,val_1_4 => val_1_1
    | val_1_1,val_1_2,val_1_3 => val_1_4
    | val_1_1,val_1_1,val_1_4 => val_1_1
    | val_1_1,val_1_3,val_1_3 => val_1_1
    | val_1_4,val_1_4,val_1_3 => val_1_4
    | val_1_4,val_1_1,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_4 => val_1_1
    | val_1_1,val_1_3,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_3 => val_1_1
    | val_1_2,val_1_1,val_1_3 => val_1_4
    | val_1_3,val_1_3,val_1_1 => val_1_1
    | val_1_4,val_1_2,val_1_4 => val_1_1
    | val_1_4,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_1,val_1_1 => val_1_1
    | val_1_4,val_1_3,val_1_2 => val_1_4
    | val_1_2,val_1_2,val_1_2 => val_1_1
    | val_1_4,val_1_1,val_1_3 => val_1_4
    | val_1_4,val_1_3,val_1_1 => val_1_1
    | val_1_4,val_1_2,val_1_3 => val_1_4
    | val_1_4,val_1_3,val_1_3 => val_1_4
    | val_1_3,val_1_2,val_1_3 => val_1_1
    | val_1_2,val_1_2,val_1_4 => val_1_2
    | val_1_4,val_1_4,val_1_2 => val_1_4
    | val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_1 => val_1_1
    | val_1_4,val_1_1,val_1_4 => val_1_4
    | val_1_2,val_1_4,val_1_4 => val_1_1
    | val_1_2,val_1_4,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_1 => val_1_4
    | val_1_3,val_1_1,val_1_3 => val_1_2
    | val_1_3,val_1_2,val_1_4 => val_1_4
    | val_1_3,val_1_4,val_1_2 => val_1_2
    | val_1_3,val_1_4,val_1_4 => val_1_1
    | val_1_3,val_1_4,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_1 => val_1_1
    | val_1_4,val_1_4,val_1_4 => val_1_4
    | val_1_3,val_1_2,val_1_2 => val_1_1
    | val_1_1,val_1_1,val_1_3 => val_1_1
    | val_1_2,val_1_3,val_1_4 => val_1_2
    | val_1_3,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_4,val_1_3 => val_1_4
    | val_1_2,val_1_1,val_1_4 => val_1_4
    | val_1_1,val_1_2,val_1_2 => val_1_1
    | _,_,_ => und_1
    end.

Remark seval_1_rewrite_session_current:forall X1 X2 X3 X4 X5 X6:model_1, X1=X4 -> X2=X5 -> X3=X6 -> (seval_1_model_session_current X1 X2 X3)=(seval_1_model_session_current X4 X5 X6).
Proof.
  intros X1 X2 X3 X4 X5 X6 H1 H2 H3. rewrite H1. rewrite H2. rewrite H3. reflexivity.
Qed.
Definition seval_1_model_crypt (v1 v2 : model_1) : model_1 :=
  match v1,v2 with
      val_1_3,val_1_4 => val_1_1
    | val_1_1,val_1_1 => val_1_3
    | val_1_3,val_1_2 => val_1_3
    | val_1_1,val_1_4 => val_1_3
    | val_1_2,val_1_3 => val_1_2
    | val_1_3,val_1_3 => val_1_2
    | val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_3 => val_1_1
    | val_1_3,val_1_1 => val_1_1
    | val_1_4,val_1_4 => val_1_1
    | val_1_4,val_1_2 => val_1_4
    | val_1_1,val_1_2 => val_1_4
    | val_1_2,val_1_4 => val_1_1
    | val_1_4,val_1_1 => val_1_1
    | val_1_2,val_1_1 => val_1_2
    | val_1_1,val_1_3 => val_1_3
    | _,_ => und_1
    end.

Remark seval_1_rewrite_crypt:forall X1 X2 X3 X4:model_1, X1=X3 -> X2=X4 -> (seval_1_model_crypt X1 X2)=(seval_1_model_crypt X3 X4).
Proof.
  intros X1 X2 X3 X4 H1 H2. rewrite H1. rewrite H2. reflexivity.
Qed.
Definition seval_1_model_noncea_current (v1 v2 : model_1) : model_1 :=
  match v1,v2 with
      val_1_3,val_1_4 => val_1_1
    | val_1_1,val_1_1 => val_1_1
    | val_1_3,val_1_2 => val_1_1
    | val_1_1,val_1_4 => val_1_1
    | val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_3 => val_1_3
    | val_1_2,val_1_2 => val_1_3
    | val_1_4,val_1_3 => val_1_1
    | val_1_3,val_1_1 => val_1_1
    | val_1_4,val_1_4 => val_1_1
    | val_1_4,val_1_2 => val_1_1
    | val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_4 => val_1_1
    | val_1_4,val_1_1 => val_1_1
    | val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_3 => val_1_1
    | _,_ => und_1
    end.

Remark seval_1_rewrite_noncea_current:forall X1 X2 X3 X4:model_1, X1=X3 -> X2=X4 -> (seval_1_model_noncea_current X1 X2)=(seval_1_model_noncea_current X3 X4).
Proof.
  intros X1 X2 X3 X4 H1 H2. rewrite H1. rewrite H2. reflexivity.
Qed.
Definition seval_1_model_sym : model_1 := val_1_3.

Remark seval_1_rewrite_sym:seval_1_model_sym=seval_1_model_sym.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_pub : model_1 := val_1_2.

Remark seval_1_rewrite_pub:seval_1_model_pub=seval_1_model_pub.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_cons (v1 v2 : model_1) : model_1 :=
  match v1,v2 with
      val_1_3,val_1_4 => val_1_1
    | val_1_1,val_1_1 => val_1_4
    | val_1_3,val_1_2 => val_1_3
    | val_1_1,val_1_4 => val_1_4
    | val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_3 => val_1_3
    | val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_3 => val_1_1
    | val_1_3,val_1_1 => val_1_4
    | val_1_4,val_1_4 => val_1_1
    | val_1_4,val_1_2 => val_1_1
    | val_1_1,val_1_2 => val_1_1
    | val_1_2,val_1_4 => val_1_1
    | val_1_4,val_1_1 => val_1_4
    | val_1_2,val_1_1 => val_1_4
    | val_1_1,val_1_3 => val_1_4
    | _,_ => und_1
    end.

Remark seval_1_rewrite_cons:forall X1 X2 X3 X4:model_1, X1=X3 -> X2=X4 -> (seval_1_model_cons X1 X2)=(seval_1_model_cons X3 X4).
Proof.
  intros X1 X2 X3 X4 H1 H2. rewrite H1. rewrite H2. reflexivity.
Qed.
Definition seval_1_model_nonceb_current (v1 v2 v3 : model_1) : model_1 :=
  match v1,v2,v3 with
      val_1_2,val_1_4,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2 => val_1_1
    | val_1_4,val_1_2,val_1_2 => val_1_1
    | val_1_1,val_1_4,val_1_2 => val_1_1
    | val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_2 => val_1_2
    | val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_2,val_1_4 => val_1_2
    | val_1_2,val_1_1,val_1_1 => val_1_4
    | val_1_2,val_1_4,val_1_2 => val_1_2
    | val_1_3,val_1_3,val_1_3 => val_1_4
    | val_1_3,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_4 => val_1_2
    | val_1_4,val_1_3,val_1_4 => val_1_1
    | val_1_4,val_1_1,val_1_2 => val_1_4
    | val_1_3,val_1_4,val_1_3 => val_1_3
    | val_1_4,val_1_4,val_1_1 => val_1_1
    | val_1_2,val_1_3,val_1_2 => val_1_1
    | val_1_3,val_1_2,val_1_1 => val_1_1
    | val_1_3,val_1_3,val_1_4 => val_1_2
    | val_1_1,val_1_2,val_1_3 => val_1_2
    | val_1_1,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_3,val_1_3 => val_1_2
    | val_1_4,val_1_4,val_1_3 => val_1_1
    | val_1_4,val_1_1,val_1_1 => val_1_1
    | val_1_1,val_1_3,val_1_4 => val_1_2
    | val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_2,val_1_3 => val_1_3
    | val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_1 => val_1_4
    | val_1_4,val_1_2,val_1_4 => val_1_1
    | val_1_4,val_1_2,val_1_1 => val_1_1
    | val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_4,val_1_3,val_1_2 => val_1_1
    | val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_1,val_1_3 => val_1_1
    | val_1_4,val_1_3,val_1_1 => val_1_1
    | val_1_4,val_1_2,val_1_3 => val_1_1
    | val_1_4,val_1_3,val_1_3 => val_1_1
    | val_1_3,val_1_2,val_1_3 => val_1_4
    | val_1_2,val_1_2,val_1_4 => val_1_2
    | val_1_4,val_1_4,val_1_2 => val_1_1
    | val_1_2,val_1_3,val_1_1 => val_1_4
    | val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_4,val_1_1,val_1_4 => val_1_3
    | val_1_2,val_1_4,val_1_4 => val_1_2
    | val_1_2,val_1_4,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_1 => val_1_2
    | val_1_3,val_1_1,val_1_3 => val_1_2
    | val_1_3,val_1_2,val_1_4 => val_1_2
    | val_1_3,val_1_4,val_1_2 => val_1_2
    | val_1_3,val_1_4,val_1_4 => val_1_3
    | val_1_3,val_1_4,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_1 => val_1_2
    | val_1_4,val_1_4,val_1_4 => val_1_2
    | val_1_3,val_1_2,val_1_2 => val_1_2
    | val_1_1,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_4 => val_1_2
    | val_1_3,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_4,val_1_3 => val_1_1
    | val_1_2,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_2,val_1_2 => val_1_2
    | _,_,_ => und_1
    end.

Remark seval_1_rewrite_nonceb_current:forall X1 X2 X3 X4 X5 X6:model_1, X1=X4 -> X2=X5 -> X3=X6 -> (seval_1_model_nonceb_current X1 X2 X3)=(seval_1_model_nonceb_current X4 X5 X6).
Proof.
  intros X1 X2 X3 X4 X5 X6 H1 H2 H3. rewrite H1. rewrite H2. rewrite H3. reflexivity.
Qed.
Definition seval_1_model_alice : model_1 := val_1_2.

Remark seval_1_rewrite_alice:seval_1_model_alice=seval_1_model_alice.
Proof.
  reflexivity.
Qed.

Definition seval_1_model_nonceb_old (v1 v2 v3 : model_1) : model_1 :=
  match v1,v2,v3 with
      val_1_2,val_1_4,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_2 => val_1_3
    | val_1_4,val_1_2,val_1_2 => val_1_3
    | val_1_1,val_1_4,val_1_2 => val_1_2
    | val_1_1,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_1,val_1_2 => val_1_3
    | val_1_2,val_1_1,val_1_2 => val_1_2
    | val_1_1,val_1_2,val_1_4 => val_1_2
    | val_1_2,val_1_1,val_1_1 => val_1_2
    | val_1_2,val_1_4,val_1_2 => val_1_2
    | val_1_3,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_4 => val_1_2
    | val_1_4,val_1_3,val_1_4 => val_1_2
    | val_1_4,val_1_1,val_1_2 => val_1_2
    | val_1_3,val_1_4,val_1_3 => val_1_3
    | val_1_4,val_1_4,val_1_1 => val_1_2
    | val_1_2,val_1_3,val_1_2 => val_1_2
    | val_1_3,val_1_2,val_1_1 => val_1_2
    | val_1_3,val_1_3,val_1_4 => val_1_3
    | val_1_1,val_1_2,val_1_3 => val_1_2
    | val_1_1,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_3,val_1_3 => val_1_2
    | val_1_4,val_1_4,val_1_3 => val_1_3
    | val_1_4,val_1_1,val_1_1 => val_1_2
    | val_1_1,val_1_3,val_1_4 => val_1_2
    | val_1_1,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_2,val_1_3 => val_1_2
    | val_1_2,val_1_1,val_1_3 => val_1_2
    | val_1_3,val_1_3,val_1_1 => val_1_3
    | val_1_4,val_1_2,val_1_4 => val_1_3
    | val_1_4,val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_1,val_1_1 => val_1_2
    | val_1_4,val_1_3,val_1_2 => val_1_2
    | val_1_2,val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_1,val_1_3 => val_1_2
    | val_1_4,val_1_3,val_1_1 => val_1_3
    | val_1_4,val_1_2,val_1_3 => val_1_3
    | val_1_4,val_1_3,val_1_3 => val_1_2
    | val_1_3,val_1_2,val_1_3 => val_1_2
    | val_1_2,val_1_2,val_1_4 => val_1_2
    | val_1_4,val_1_4,val_1_2 => val_1_3
    | val_1_2,val_1_3,val_1_1 => val_1_2
    | val_1_1,val_1_2,val_1_1 => val_1_2
    | val_1_4,val_1_1,val_1_4 => val_1_3
    | val_1_2,val_1_4,val_1_4 => val_1_2
    | val_1_2,val_1_4,val_1_1 => val_1_2
    | val_1_1,val_1_4,val_1_1 => val_1_2
    | val_1_3,val_1_1,val_1_3 => val_1_3
    | val_1_3,val_1_2,val_1_4 => val_1_3
    | val_1_3,val_1_4,val_1_2 => val_1_3
    | val_1_3,val_1_4,val_1_4 => val_1_3
    | val_1_3,val_1_4,val_1_1 => val_1_2
    | val_1_2,val_1_2,val_1_1 => val_1_3
    | val_1_4,val_1_4,val_1_4 => val_1_2
    | val_1_3,val_1_2,val_1_2 => val_1_2
    | val_1_1,val_1_1,val_1_3 => val_1_2
    | val_1_2,val_1_3,val_1_4 => val_1_2
    | val_1_3,val_1_1,val_1_2 => val_1_3
    | val_1_3,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_4,val_1_3 => val_1_2
    | val_1_2,val_1_1,val_1_4 => val_1_2
    | val_1_1,val_1_2,val_1_2 => val_1_2
    | _,_,_ => und_1
    end.

Remark seval_1_rewrite_nonceb_old:forall X1 X2 X3 X4 X5 X6:model_1, X1=X4 -> X2=X5 -> X3=X6 -> (seval_1_model_nonceb_old X1 X2 X3)=(seval_1_model_nonceb_old X4 X5 X6).
Proof.
  intros X1 X2 X3 X4 X5 X6 H1 H2 H3. rewrite H1. rewrite H2. rewrite H3. reflexivity.
Qed.
Definition seval_1_model_noncea_old (v1 v2 : model_1) : model_1 :=
  match v1,v2 with
      val_1_3,val_1_4 => val_1_2
    | val_1_1,val_1_1 => val_1_2
    | val_1_3,val_1_2 => val_1_2
    | val_1_1,val_1_4 => val_1_3
    | val_1_2,val_1_3 => val_1_3
    | val_1_3,val_1_3 => val_1_2
    | val_1_2,val_1_2 => val_1_2
    | val_1_4,val_1_3 => val_1_3
    | val_1_3,val_1_1 => val_1_3
    | val_1_4,val_1_4 => val_1_3
    | val_1_4,val_1_2 => val_1_2
    | val_1_1,val_1_2 => val_1_2
    | val_1_2,val_1_4 => val_1_3
    | val_1_4,val_1_1 => val_1_3
    | val_1_2,val_1_1 => val_1_3
    | val_1_1,val_1_3 => val_1_2
    | _,_ => und_1
    end.

Remark seval_1_rewrite_noncea_old:forall X1 X2 X3 X4:model_1, X1=X3 -> X2=X4 -> (seval_1_model_noncea_old X1 X2)=(seval_1_model_noncea_old X3 X4).
Proof.
  intros X1 X2 X3 X4 H1 H2. rewrite H1. rewrite H2. reflexivity.
Qed.
Definition seval_1_model_session_old (v1 v2 v3 : model_1) : model_1 :=
  match v1,v2,v3 with
      val_1_2,val_1_4,val_1_3 => val_1_4
    | val_1_2,val_1_3,val_1_3 => val_1_4
    | val_1_3,val_1_3,val_1_2 => val_1_4
    | val_1_4,val_1_2,val_1_2 => val_1_4
    | val_1_1,val_1_4,val_1_2 => val_1_4
    | val_1_1,val_1_3,val_1_1 => val_1_4
    | val_1_1,val_1_1,val_1_2 => val_1_4
    | val_1_2,val_1_1,val_1_2 => val_1_4
    | val_1_1,val_1_2,val_1_4 => val_1_4
    | val_1_2,val_1_1,val_1_1 => val_1_4
    | val_1_2,val_1_4,val_1_2 => val_1_4
    | val_1_3,val_1_3,val_1_3 => val_1_4
    | val_1_3,val_1_1,val_1_1 => val_1_4
    | val_1_1,val_1_4,val_1_4 => val_1_4
    | val_1_4,val_1_3,val_1_4 => val_1_4
    | val_1_4,val_1_1,val_1_2 => val_1_4
    | val_1_3,val_1_4,val_1_3 => val_1_4
    | val_1_4,val_1_4,val_1_1 => val_1_4
    | val_1_2,val_1_3,val_1_2 => val_1_4
    | val_1_3,val_1_2,val_1_1 => val_1_4
    | val_1_3,val_1_3,val_1_4 => val_1_4
    | val_1_1,val_1_2,val_1_3 => val_1_4
    | val_1_1,val_1_1,val_1_4 => val_1_4
    | val_1_1,val_1_3,val_1_3 => val_1_4
    | val_1_4,val_1_4,val_1_3 => val_1_4
    | val_1_4,val_1_1,val_1_1 => val_1_4
    | val_1_1,val_1_3,val_1_4 => val_1_4
    | val_1_1,val_1_3,val_1_2 => val_1_4
    | val_1_2,val_1_2,val_1_3 => val_1_4
    | val_1_2,val_1_1,val_1_3 => val_1_4
    | val_1_3,val_1_3,val_1_1 => val_1_4
    | val_1_4,val_1_2,val_1_4 => val_1_4
    | val_1_4,val_1_2,val_1_1 => val_1_4
    | val_1_1,val_1_1,val_1_1 => val_1_4
    | val_1_4,val_1_3,val_1_2 => val_1_4
    | val_1_2,val_1_2,val_1_2 => val_1_4
    | val_1_4,val_1_1,val_1_3 => val_1_4
    | val_1_4,val_1_3,val_1_1 => val_1_4
    | val_1_4,val_1_2,val_1_3 => val_1_4
    | val_1_4,val_1_3,val_1_3 => val_1_4
    | val_1_3,val_1_2,val_1_3 => val_1_4
    | val_1_2,val_1_2,val_1_4 => val_1_4
    | val_1_4,val_1_4,val_1_2 => val_1_4
    | val_1_2,val_1_3,val_1_1 => val_1_4
    | val_1_1,val_1_2,val_1_1 => val_1_4
    | val_1_4,val_1_1,val_1_4 => val_1_4
    | val_1_2,val_1_4,val_1_4 => val_1_4
    | val_1_2,val_1_4,val_1_1 => val_1_4
    | val_1_1,val_1_4,val_1_1 => val_1_4
    | val_1_3,val_1_1,val_1_3 => val_1_4
    | val_1_3,val_1_2,val_1_4 => val_1_4
    | val_1_3,val_1_4,val_1_2 => val_1_4
    | val_1_3,val_1_4,val_1_4 => val_1_4
    | val_1_3,val_1_4,val_1_1 => val_1_4
    | val_1_2,val_1_2,val_1_1 => val_1_4
    | val_1_4,val_1_4,val_1_4 => val_1_4
    | val_1_3,val_1_2,val_1_2 => val_1_4
    | val_1_1,val_1_1,val_1_3 => val_1_4
    | val_1_2,val_1_3,val_1_4 => val_1_4
    | val_1_3,val_1_1,val_1_2 => val_1_4
    | val_1_3,val_1_1,val_1_4 => val_1_4
    | val_1_1,val_1_4,val_1_3 => val_1_4
    | val_1_2,val_1_1,val_1_4 => val_1_4
    | val_1_1,val_1_2,val_1_2 => val_1_4
    | _,_,_ => und_1
    end.

Remark seval_1_rewrite_session_old:forall X1 X2 X3 X4 X5 X6:model_1, X1=X4 -> X2=X5 -> X3=X6 -> (seval_1_model_session_old X1 X2 X3)=(seval_1_model_session_old X4 X5 X6).
Proof.
  intros X1 X2 X3 X4 X5 X6 H1 H2 H3. rewrite H1. rewrite H2. rewrite H3. reflexivity.
Qed.
Fixpoint seval_1 (t : term) {struct t} : model_1 :=
  match t  with
    server => (seval_1_model_server)
  | (s X1) => (seval_1_model_s (seval_1 X1))
  | nil => (seval_1_model_nil)
  | i => (seval_1_model_i)
  | bob => (seval_1_model_bob)
  | prv => (seval_1_model_prv)
  | (key X1 X2) => (seval_1_model_key (seval_1 X1) (seval_1 X2))
  | (session_current X1 X2 X3) => (seval_1_model_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3))
  | (crypt X1 X2) => (seval_1_model_crypt (seval_1 X1) (seval_1 X2))
  | (noncea_current X1 X2) => (seval_1_model_noncea_current (seval_1 X1) (seval_1 X2))
  | sym => (seval_1_model_sym)
  | pub => (seval_1_model_pub)
  | (cons X1 X2) => (seval_1_model_cons (seval_1 X1) (seval_1 X2))
  | (nonceb_current X1 X2 X3) => (seval_1_model_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3))
  | alice => (seval_1_model_alice)
  | (nonceb_old X1 X2 X3) => (seval_1_model_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3))
  | (noncea_old X1 X2) => (seval_1_model_noncea_old (seval_1 X1) (seval_1 X2))
  | (session_old X1 X2 X3) => (seval_1_model_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3))
  end.

Fixpoint seval_1_model_auto__q1 (X:term) (pi:(auto__q1 X)) {struct pi}:((seval_1 X)=val_1_2) :=
  match pi as pi in (auto__q1 X) return (seval_1 X)=val_1_2 with
    (trans__q1_server_1) => (seval_1_rewrite_server)
  | (trans__q1_s_1 X1 H1) => (seval_1_rewrite_s (seval_1 X1) val_1_2 (seval_1_model_auto__q1 X1 H1))
  | (trans__q1_nil_1) => (seval_1_rewrite_nil)
  | (trans__q1_i_1) => (seval_1_rewrite_i)
  | (trans__q1_bob_1) => (seval_1_rewrite_bob)
  | (trans__q1_prv_1) => (seval_1_rewrite_prv)
  | (trans__q1_key_1 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q1_key_2 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_key_3 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q1_key_4 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q1_key_5 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_key_6 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_key_7 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q1_key_8 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q1_key_9 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q1_key_10 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_key_11 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q1_session_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_session_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_session_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_session_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_session_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_session_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_session_current_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_session_current_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_session_current_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_session_current_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_crypt_1 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q1_crypt_2 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_crypt_3 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_crypt_4 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_pub_1) => (seval_1_rewrite_pub)
  | (trans__q1_cons_1 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_nonceb_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_20 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_21 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_22 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_23 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_24 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_25 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_26 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_27 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_28 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_current_29 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_30 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_current_31 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_current_32 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_33 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_34 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_35 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_current_36 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_alice_1) => (seval_1_rewrite_alice)
  | (trans__q1_nonceb_old_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_20 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_21 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_22 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_23 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_24 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_25 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_26 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_27 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_28 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_29 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_30 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_31 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_32 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_33 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_34 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_35 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_36 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_37 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_38 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q1_nonceb_old_39 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q1_nonceb_old_40 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_41 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_42 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_43 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q1_nonceb_old_44 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_nonceb_old_45 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q1_noncea_old_1 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_noncea_old_2 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q1_noncea_old_3 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_noncea_old_4 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_noncea_old_5 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q1_noncea_old_6 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_noncea_old_7 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q1_noncea_old_8 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2))
  end

with seval_1_model_auto__q2 (X:term) (pi:(auto__q2 X)) {struct pi}:((seval_1 X)=val_1_3) :=
  match pi as pi in (auto__q2 X) return (seval_1 X)=val_1_3 with
    (trans__q2_s_1 X1 H1) => (seval_1_rewrite_s (seval_1 X1) val_1_3 (seval_1_model_auto__q2 X1 H1))
  | (trans__q2_key_1 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q2_key_2 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q2_crypt_1 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_crypt_2 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q2_crypt_3 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q2_crypt_4 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q2_noncea_current_1 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_noncea_current_2 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_noncea_current_3 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q2_sym_1) => (seval_1_rewrite_sym)
  | (trans__q2_cons_1 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q2_cons_2 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_cons_3 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_nonceb_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_nonceb_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_nonceb_old_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_old_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_old_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_nonceb_old_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q2_nonceb_old_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_old_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_old_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q2_nonceb_old_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q2_nonceb_old_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_nonceb_old_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_nonceb_old_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q2_nonceb_old_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q2_nonceb_old_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q2_nonceb_old_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q2_noncea_old_1 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q2_noncea_old_2 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q2_noncea_old_3 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_noncea_old_4 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q2_noncea_old_5 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q2_noncea_old_6 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q2_noncea_old_7 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q2_noncea_old_8 X1 X2 H1 H2) => (seval_1_rewrite_noncea_old (seval_1 X1) (seval_1 X2) val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2))
  end

with seval_1_model_auto__q3 (X:term) (pi:(auto__q3 X)) {struct pi}:((seval_1 X)=val_1_4) :=
  match pi as pi in (auto__q3 X) return (seval_1 X)=val_1_4 with
    (trans__q3_key_1 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q3_session_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_current_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_current_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_current_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_current_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_current_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_current_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_current_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_20 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_current_21 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_current_22 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_current_23 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_crypt_1 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q3_crypt_2 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q3_cons_1 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q3_cons_2 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q3_cons_3 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q3_cons_4 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q3_cons_5 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q3_cons_6 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q3_nonceb_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_nonceb_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_nonceb_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_nonceb_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_nonceb_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_nonceb_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_20 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_21 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_22 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_23 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_24 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_25 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_26 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_27 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_28 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_29 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_30 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_31 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_32 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_33 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_34 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_35 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_36 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_37 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_38 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_39 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_40 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_41 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_42 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_43 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_44 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_45 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_46 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_47 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_48 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_49 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_50 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_51 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_52 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_53 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_54 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_1 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_55 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_56 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q3_session_old_57 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_1 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_58 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_59 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_60 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q3_session_old_61 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q3_session_old_62 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_63 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q3_session_old_64 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_old (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  end

with seval_1_model_auto__q4 (X:term) (pi:(auto__q4 X)) {struct pi}:((seval_1 X)=val_1_1) :=
  match pi as pi in (auto__q4 X) return (seval_1 X)=val_1_1 with
    (trans__q4_s_1 X1 H1) => (seval_1_rewrite_s (seval_1 X1) val_1_1 (seval_1_model_auto__q4 X1 H1))
  | (trans__q4_s_2 X1 H1) => (seval_1_rewrite_s (seval_1 X1) val_1_4 (seval_1_model_auto__q3 X1 H1))
  | (trans__q4_key_1 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_key_2 X1 X2 H1 H2) => (seval_1_rewrite_key (seval_1 X1) (seval_1 X2) val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q4_session_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_4 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_3 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_19 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_20 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_21 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_22 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_3 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_23 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_24 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_4 val_1_3 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_session_current_25 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_26 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_27 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_28 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_2 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_session_current_29 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_session_current_30 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_session_current_31 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_session_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_crypt_1 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_crypt_2 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_crypt_3 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q4_crypt_4 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_crypt_5 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_crypt_6 X1 X2 H1 H2) => (seval_1_rewrite_crypt (seval_1 X1) (seval_1 X2) val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_noncea_current_1 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_noncea_current_2 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_1 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q4_noncea_current_3 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_2 val_1_1 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_noncea_current_4 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_noncea_current_5 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_noncea_current_6 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_noncea_current_7 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q4_noncea_current_8 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_3 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_noncea_current_9 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_1 val_1_4 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_noncea_current_10 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_noncea_current_11 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_noncea_current_12 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_noncea_current_13 X1 X2 H1 H2) => (seval_1_rewrite_noncea_current (seval_1 X1) (seval_1 X2) val_1_1 val_1_1 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q4 X2 H2))
  | (trans__q4_cons_1 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_3 val_1_4 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_cons_2 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_cons_3 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2))
  | (trans__q4_cons_4 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_2 val_1_4 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_cons_5 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_4 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2))
  | (trans__q4_cons_6 X1 X2 H1 H2) => (seval_1_rewrite_cons (seval_1 X1) (seval_1 X2) val_1_1 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q1 X2 H2))
  | (trans__q4_nonceb_current_1 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_2 val_1_3 val_1_2 (seval_1_model_auto__q1 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_2 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_nonceb_current_3 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_nonceb_current_4 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_nonceb_current_5 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_4 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q3 X3 H3))
  | (trans__q4_nonceb_current_6 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_7 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_3 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_nonceb_current_8 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_3 val_1_2 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_9 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_nonceb_current_10 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_1 val_1_4 val_1_2 (seval_1_model_auto__q4 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_11 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_nonceb_current_12 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_13 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_3 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q2 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_nonceb_current_14 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_1 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_nonceb_current_15 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_1 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q4 X2 H2) (seval_1_model_auto__q2 X3 H3))
  | (trans__q4_nonceb_current_16 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_3 val_1_2 val_1_1 (seval_1_model_auto__q2 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q4 X3 H3))
  | (trans__q4_nonceb_current_17 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_4 val_1_2 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q3 X2 H2) (seval_1_model_auto__q1 X3 H3))
  | (trans__q4_nonceb_current_18 X1 X2 X3 H1 H2 H3) => (seval_1_rewrite_nonceb_current (seval_1 X1) (seval_1 X2) (seval_1 X3) val_1_4 val_1_2 val_1_3 (seval_1_model_auto__q3 X1 H1) (seval_1_model_auto__q1 X2 H2) (seval_1_model_auto__q2 X3 H3))
  end
.

Remark rem_1589 : forall X1:term, auto__q2 X1 -> auto__q4 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X1)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1590 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1589).
Defined.

Remark rem_1591 : forall X1:term, auto__q1 X1 -> auto__q4 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X1)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1592 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1591).
Defined.

Remark rem_1593 : forall X1:term, auto_knows_current (s X1) -> or_2
    (auto__q2 X1)    (auto__q1 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1594 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto__q4 X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1. intro H. intros.
  elim (rem_1593 X1 H);  intros.
  apply (rem_1590 epsilon_m_q4_mknows_current X1);  tauto.
  apply (rem_1592 epsilon_m_q4_mknows_current X1);  tauto.
Defined.

Remark rem_1595 : forall X1:term, auto__q2 X1 -> auto__q3 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X1)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1596 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1595).
Defined.

Remark rem_1597 : forall X1:term, auto__q1 X1 -> auto__q3 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X1)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1598 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1597).
Defined.

Remark rem_1599 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto_knows_current (s X1) -> auto__q3 X1 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1. intro H. intros.
  elim (rem_1593 X1 H);  intros.
  apply (rem_1596 epsilon_m_q4_mknows_current X1);  tauto.
  apply (rem_1598 epsilon_m_q4_mknows_current X1);  tauto.
Defined.

Remark rem_1600 : forall X1:term, auto__q4 (s X1) -> or_2
    (auto__q4 X1)    (auto__q3 X1).
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1601 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q4 (s X1) -> auto_knows_current (s X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1. intro H. intros.
  elim (rem_1600 X1 H);  intros.
  apply (rem_1594 epsilon_m_q4_mknows_current X1);  tauto.
  apply (rem_1599 epsilon_m_q4_mknows_current X1);  tauto.
Defined.

Remark rem_1602 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1603 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1604 : forall X1:term, auto__q2 X1 -> auto__q1 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X1)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1605 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q1 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1604).
Defined.

Remark rem_1606 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1607 : forall X2:term, auto__q1 X2 -> auto__q3 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X2)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1608 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1607).
Defined.

Remark rem_1609 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1610 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1611 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1612 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1613 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1614 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1615 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1616 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1617 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1618 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Inductive or_13(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13:Prop) : Prop :=
    or_13_intro_1 : H1 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_2 : H2 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_3 : H3 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_4 : H4 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_5 : H5 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_6 : H6 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_7 : H7 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_8 : H8 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_9 : H9 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_10 : H10 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_11 : H11 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_12 : H12 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
  | or_13_intro_13 : H13 -> (or_13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13)
.

Remark rem_1619 : forall X1 X2:term, auto_knows_current (key X1 X2) -> or_13
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_13_intro_1; tauto.
  intros. apply or_13_intro_2; tauto.
  intros. apply or_13_intro_3; tauto.
  intros. apply or_13_intro_4; tauto.
  intros. apply or_13_intro_5; tauto.
  intros. apply or_13_intro_6; tauto.
  intros. apply or_13_intro_7; tauto.
  intros. apply or_13_intro_8; tauto.
  intros. apply or_13_intro_9; tauto.
  intros. apply or_13_intro_10; tauto.
  intros. apply or_13_intro_11; tauto.
  intros. apply or_13_intro_12; tauto.
  intros. apply or_13_intro_13; tauto.
Qed.

Remark rem_1620 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto__q2 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1619 X1 X2 H);  intros.
  apply (rem_1602 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1603 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1606 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1609 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1610 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1612 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1613 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1615 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1616 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1617 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1618 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1621 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1622 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1623 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1624 : forall X2:term, auto__q2 X2 -> auto__q3 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X2)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1625 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1624).
Defined.

Remark rem_1626 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1627 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1628 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1629 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1630 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1631 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1632 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1633 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto__q2 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1619 X1 X2 H);  intros.
  apply (rem_1621 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1622 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1623 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1626 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1627 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1628 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1629 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1631 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1603 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1612 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1632 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1634 : forall X1 X2:term, auto__q4 (key X1 X2) -> or_2
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q2 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_1635 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 (key X1 X2) -> auto_knows_current (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1634 X1 X2 H);  intros.
  apply (rem_1620 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1633 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1636 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1637 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1638 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1639 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1640 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1641 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1642 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1643 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1644 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1645 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1646 : forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> or_10
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_10_intro_1; tauto.
  intros. apply or_10_intro_2; tauto.
  intros. apply or_10_intro_3; tauto.
  intros. apply or_10_intro_4; tauto.
  intros. apply or_10_intro_5; tauto.
  intros. apply or_10_intro_6; tauto.
  intros. apply or_10_intro_7; tauto.
  intros. apply or_10_intro_8; tauto.
  intros. apply or_10_intro_9; tauto.
  intros. apply or_10_intro_10; tauto.
Qed.

Remark rem_1647 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1636 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1637 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1638 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1639 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1640 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1641 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1642 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1643 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1644 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1645 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1648 : forall X3:term, auto__q1 X3 -> auto__q3 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X3)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1649 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1648).
Defined.

Remark rem_1650 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1651 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1652 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1653 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1654 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1655 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1656 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1657 : forall X3:term, auto__q1 X3 -> auto__q4 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X3)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1658 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1657).
Defined.

Remark rem_1659 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1658 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1660 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1661 : forall X2:term, auto__q2 X2 -> auto__q1 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X2)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1662 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q1 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1661).
Defined.

Remark rem_1663 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1664 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1650 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1651 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1652 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1653 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1654 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1655 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1656 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1659 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1660 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1663 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1665 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1666 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1667 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1668 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1669 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1670 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1671 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1672 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1673 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1674 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1665 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1666 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1667 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1668 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1669 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1639 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1670 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1671 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1672 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1673 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1675 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1676 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1677 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1678 : forall X2:term, auto__q2 X2 -> auto__q4 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X2)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1679 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1678).
Defined.

Remark rem_1680 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1681 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1682 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1683 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1684 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1685 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1686 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1687 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1675 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1676 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1677 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1680 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1681 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1682 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1683 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1684 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1685 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1686 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1688 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1689 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1690 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1691 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1692 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1693 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1694 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1695 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1696 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1697 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1698 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1688 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1689 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1690 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1691 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1692 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1694 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1696 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1697 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1699 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1700 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1701 : forall X3:term, auto__q3 X3 -> auto__q4 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  cut ((seval_1 X3)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1702 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q3 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1701).
Defined.

Remark rem_1703 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1704 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1705 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1706 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1707 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1708 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1709 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1710 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1711 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1699 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1700 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1703 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1704 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1705 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1706 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1707 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1708 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1709 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1710 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1712 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1713 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1714 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1715 : forall X2:term, auto__q1 X2 -> auto__q4 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  cut ((seval_1 X2)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1716 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1715).
Defined.

Remark rem_1717 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1718 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1719 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1720 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1721 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1722 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1723 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1724 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1712 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1713 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1714 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1717 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1718 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1719 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1720 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1721 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1722 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1723 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1725 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1726 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1727 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1728 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1729 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1730 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1731 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1732 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1733 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1734 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1725 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1726 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1727 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1728 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1729 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1730 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1731 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1732 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1733 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1735 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1736 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1737 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1738 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1739 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1740 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1741 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1742 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1743 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1744 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1735 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1736 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1737 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1738 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1739 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1740 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1717 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1741 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1742 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1743 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1745 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1746 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1747 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1748 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1749 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1750 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1751 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1752 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1745 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1746 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1747 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1748 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1749 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1733 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1750 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1725 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1751 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1688 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1753 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1754 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1755 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1756 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1757 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1758 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1759 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1760 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1761 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1762 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1763 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1753 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1754 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1755 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1756 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1757 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1758 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1759 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1760 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1761 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1762 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1764 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1765 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1766 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1767 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1768 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1769 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1770 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1771 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1772 : forall X3:term, auto__q2 X3 -> auto__q3 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X3)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1773 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1772).
Defined.

Remark rem_1774 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1773 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1775 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1764 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1765 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1766 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1767 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1737 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1768 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1769 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1770 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1771 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1774 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1776 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1773 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1777 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1778 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1779 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1780 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1781 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1782 : forall X3:term, auto__q2 X3 -> auto__q4 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X3)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1783 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1782).
Defined.

Remark rem_1784 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1783 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1785 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1786 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1776 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1777 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1778 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1779 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1780 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1781 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1653 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1784 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1785 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1764 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1787 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1788 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1789 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1790 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1791 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1792 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1793 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1794 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1787 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1788 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1654 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1789 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1790 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1791 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1792 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1793 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1683 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1712 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1795 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1796 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1797 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1798 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1799 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1800 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1801 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1684 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1790 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1795 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1796 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1797 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1798 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1791 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1799 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1682 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1800 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1802 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1803 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1804 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1805 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1806 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1807 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1808 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1809 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1810 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1811 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1802 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1803 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1804 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1761 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1805 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1806 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1807 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1808 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1809 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1810 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1812 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1813 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1814 : forall X2:term, auto__q3 X2 -> auto__q4 X2 -> False. (* Check disjointness. *)
Proof.
  intro X2. intros.
  cut ((seval_1 X2)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  cut ((seval_1 X2)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1815 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q3 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1814).
Defined.

Remark rem_1816 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1817 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1818 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1819 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1820 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1821 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1822 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1812 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1813 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1705 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1816 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1817 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1818 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1819 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1677 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1820 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1821 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1823 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1824 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1825 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1826 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1827 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1828 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1829 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1830 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1663 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1823 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1824 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1769 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1714 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1825 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1826 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1827 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1828 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1829 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1831 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1832 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1833 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1834 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1835 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1836 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1837 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1838 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1839 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1840 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1841 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1831 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1832 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1833 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1834 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1835 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1836 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1837 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1838 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1839 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1840 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1842 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1843 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1844 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1845 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1846 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1847 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1848 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1849 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1850 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1842 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1843 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1844 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1666 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1845 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1637 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1846 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1847 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1848 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1849 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1851 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1852 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1853 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1854 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1855 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1856 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1851 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1852 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1780 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1853 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1854 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1796 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1789 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1855 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1680 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1735 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1857 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1858 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1859 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1860 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1861 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1862 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1863 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1864 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1857 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1858 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1847 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1759 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1859 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1860 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1861 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1862 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1807 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1863 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1865 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1866 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1867 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1868 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1869 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1870 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1871 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1872 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1873 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1874 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1865 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1866 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1867 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1868 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1869 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1870 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1871 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1872 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1694 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1873 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1875 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1876 : forall X3:term, auto__q2 X3 -> auto__q1 X3 -> False. (* Check disjointness. *)
Proof.
  intro X3. intros.
  cut ((seval_1 X3)=val_1_3). 2:apply seval_1_model_auto__q2. 2:assumption.
  cut ((seval_1 X3)=val_1_2). 2:apply seval_1_model_auto__q1. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1877 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q1 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1876).
Defined.

Remark rem_1878 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q1 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1877 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1879 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1880 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1881 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1783 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1882 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1883 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1884 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1885 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1875 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1878 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1879 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1880 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1881 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1882 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1883 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1780 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1816 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1884 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1886 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1887 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1888 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1889 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1890 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1891 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1892 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1869 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1886 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1887 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1888 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1889 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1870 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1890 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1891 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1893 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1894 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1895 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1896 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1897 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1898 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1899 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_1900 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1893 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1714 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1894 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1768 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1895 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1896 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1825 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1897 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1898 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1899 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1901 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1902 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1903 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1904 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1905 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1906 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1907 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1908 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1909 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1910 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1911 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1901 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1902 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1903 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1904 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1905 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1906 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1907 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1908 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1909 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1910 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1912 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1913 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1914 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1915 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1916 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1917 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1918 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1919 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1863 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1912 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1913 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1914 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1902 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1907 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1915 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1916 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1917 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1918 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1920 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1921 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1922 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1923 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1924 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1925 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1800 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1718 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1895 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1740 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1920 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1921 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1719 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1922 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1923 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1924 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1926 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1927 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1928 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1929 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1930 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1931 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1932 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1926 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1848 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1927 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1672 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1928 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1644 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1929 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1636 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1930 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1931 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1933 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1934 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1935 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1936 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1937 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1938 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1939 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1940 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_1933 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1934 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1935 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1936 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1937 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1928 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1848 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1804 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1938 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1939 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Inductive or_31(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31:Prop) : Prop :=
    or_31_intro_1 : H1 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_2 : H2 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_3 : H3 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_4 : H4 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_5 : H5 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_6 : H6 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_7 : H7 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_8 : H8 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_9 : H9 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_10 : H10 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_11 : H11 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_12 : H12 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_13 : H13 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_14 : H14 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_15 : H15 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_16 : H16 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_17 : H17 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_18 : H18 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_19 : H19 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_20 : H20 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_21 : H21 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_22 : H22 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_23 : H23 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_24 : H24 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_25 : H25 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_26 : H26 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_27 : H27 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_28 : H28 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_29 : H29 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_30 : H30 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
  | or_31_intro_31 : H31 -> (or_31 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31)
.

Remark rem_1941 : forall X1 X2 X3:term, auto__q4 (session_current X1 X2 X3) -> or_31
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_31_intro_1; tauto.
  intros. apply or_31_intro_2; tauto.
  intros. apply or_31_intro_3; tauto.
  intros. apply or_31_intro_4; tauto.
  intros. apply or_31_intro_5; tauto.
  intros. apply or_31_intro_6; tauto.
  intros. apply or_31_intro_7; tauto.
  intros. apply or_31_intro_8; tauto.
  intros. apply or_31_intro_9; tauto.
  intros. apply or_31_intro_10; tauto.
  intros. apply or_31_intro_11; tauto.
  intros. apply or_31_intro_12; tauto.
  intros. apply or_31_intro_13; tauto.
  intros. apply or_31_intro_14; tauto.
  intros. apply or_31_intro_15; tauto.
  intros. apply or_31_intro_16; tauto.
  intros. apply or_31_intro_17; tauto.
  intros. apply or_31_intro_18; tauto.
  intros. apply or_31_intro_19; tauto.
  intros. apply or_31_intro_20; tauto.
  intros. apply or_31_intro_21; tauto.
  intros. apply or_31_intro_22; tauto.
  intros. apply or_31_intro_23; tauto.
  intros. apply or_31_intro_24; tauto.
  intros. apply or_31_intro_25; tauto.
  intros. apply or_31_intro_26; tauto.
  intros. apply or_31_intro_27; tauto.
  intros. apply or_31_intro_28; tauto.
  intros. apply or_31_intro_29; tauto.
  intros. apply or_31_intro_30; tauto.
  intros. apply or_31_intro_31; tauto.
Qed.

Remark rem_1942 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 (session_current X1 X2 X3) -> auto_knows_current (session_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1941 X1 X2 X3 H);  intros.
  apply (rem_1647 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1664 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1674 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1687 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1698 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1711 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1724 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1734 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1744 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1752 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1763 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1775 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1786 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1794 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1801 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1811 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1822 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1830 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1841 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1850 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1856 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1864 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1874 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1885 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1892 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1900 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1911 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1919 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1925 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1932 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1940 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_1943 : forall X1:term, auto__q3 X1 -> auto__q4 X1 -> False. (* Check disjointness. *)
Proof.
  intro X1. intros.
  cut ((seval_1 X1)=val_1_4). 2:apply seval_1_model_auto__q3. 2:assumption.
  cut ((seval_1 X1)=val_1_1). 2:apply seval_1_model_auto__q4. 2:assumption.
  intro HH. rewrite HH. discriminate.
Qed.

Remark rem_1944 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q3 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q4_mknows_current. exact (rem_1943).
Defined.

Remark rem_1945 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1946 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1947 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1948 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1949 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1950 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1951 : forall X1 X2:term, auto_knows_current (crypt X1 X2) -> or_8
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_8_intro_1; tauto.
  intros. apply or_8_intro_2; tauto.
  intros. apply or_8_intro_3; tauto.
  intros. apply or_8_intro_4; tauto.
  intros. apply or_8_intro_5; tauto.
  intros. apply or_8_intro_6; tauto.
  intros. apply or_8_intro_7; tauto.
  intros. apply or_8_intro_8; tauto.
Qed.

Remark rem_1952 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q3 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1945 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1946 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1602 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1947 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1948 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1621 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1949 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1950 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1953 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1954 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1955 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1956 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1629 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1953 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1609 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1954 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1626 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1955 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1957 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1958 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1959 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1960 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1961 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q3 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1957 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1947 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1958 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1959 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1627 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1960 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1945 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1962 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1963 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1964 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1965 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1966 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q2 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1632 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1962 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1963 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1623 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1955 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1964 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1606 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1965 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1967 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1968 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1969 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1970 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1971 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1972 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1973 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q1 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1967 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1968 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1969 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1970 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1971 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1972 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1974 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1975 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1976 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1977 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1978 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q3 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_1959 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1974 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1615 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1975 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1976 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1631 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1977 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1948 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

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

Remark rem_1979 : forall X1 X2:term, auto__q4 (crypt X1 X2) -> or_6
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q4 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_1980 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 (crypt X1 X2) -> auto_knows_current (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1979 X1 X2 H);  intros.
  apply (rem_1952 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1956 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1961 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1966 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1973 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1978 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1981 : forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> or_3
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q1 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_1982 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q3 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1947 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1621 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1949 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1983 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1984 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1985 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q4 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1983 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1622 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1984 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1986 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1987 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1988 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q1 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1986 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1623 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1987 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1989 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1626 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1990 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1991 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q3 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1960 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1990 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1992 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_1993 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q2 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1612 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1992 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1617 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1994 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q3 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1958 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1627 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1960 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1995 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q2 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1623 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1964 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1606 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1996 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_1997 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q4 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1967 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1629 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1996 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1998 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q1 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1969 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1971 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_1999 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q3 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1975 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1631 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1977 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2000 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2001 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q4 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_1984 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1603 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2000 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2002 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2003 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2004 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (noncea_current X1 X2) -> auto__q4 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1981 X1 X2 H);  intros.
  apply (rem_2002 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1632 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2003 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2005 : forall X1 X2:term, auto__q4 (noncea_current X1 X2) -> or_13
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_13_intro_1; tauto.
  intros. apply or_13_intro_2; tauto.
  intros. apply or_13_intro_3; tauto.
  intros. apply or_13_intro_4; tauto.
  intros. apply or_13_intro_5; tauto.
  intros. apply or_13_intro_6; tauto.
  intros. apply or_13_intro_7; tauto.
  intros. apply or_13_intro_8; tauto.
  intros. apply or_13_intro_9; tauto.
  intros. apply or_13_intro_10; tauto.
  intros. apply or_13_intro_11; tauto.
  intros. apply or_13_intro_12; tauto.
  intros. apply or_13_intro_13; tauto.
Qed.

Remark rem_2006 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 (noncea_current X1 X2) -> auto_knows_current (noncea_current X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2005 X1 X2 H);  intros.
  apply (rem_1982 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1985 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1988 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1989 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1991 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1993 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1994 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1995 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1997 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1998 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1999 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2001 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2004 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2007 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q2 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1609 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1626 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2008 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q3 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1610 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1960 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1990 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2009 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q3 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1611 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1958 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1627 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1960 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2010 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q1 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1614 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1969 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1630 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1971 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2011 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q3 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1615 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1975 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1631 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1977 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2012 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q4 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_1616 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1984 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_1603 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2000 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2013 : forall X1 X2:term, auto__q4 (cons X1 X2) -> or_6
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q4 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_2014 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 (cons X1 X2) -> auto_knows_current (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2013 X1 X2 H);  intros.
  apply (rem_2007 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2008 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2009 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2010 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2011 epsilon_m_q4_mknows_current X1 X2);  tauto.
  apply (rem_2012 epsilon_m_q4_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2015 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2016 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2017 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2018 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2019 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2020 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2021 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2022 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2023 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q1 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1877 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2024 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2025 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2026 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2027 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2028 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2029 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2030 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2031 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2032 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2033 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2034 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2035 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Inductive or_40(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40:Prop) : Prop :=
    or_40_intro_1 : H1 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_2 : H2 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_3 : H3 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_4 : H4 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_5 : H5 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_6 : H6 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_7 : H7 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_8 : H8 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_9 : H9 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_10 : H10 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_11 : H11 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_12 : H12 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_13 : H13 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_14 : H14 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_15 : H15 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_16 : H16 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_17 : H17 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_18 : H18 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_19 : H19 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_20 : H20 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_21 : H21 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_22 : H22 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_23 : H23 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_24 : H24 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_25 : H25 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_26 : H26 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_27 : H27 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_28 : H28 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_29 : H29 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_30 : H30 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_31 : H31 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_32 : H32 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_33 : H33 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_34 : H34 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_35 : H35 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_36 : H36 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_37 : H37 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_38 : H38 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_39 : H39 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
  | or_40_intro_40 : H40 -> (or_40 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40)
.

Remark rem_2036 : forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> or_40
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_40_intro_1; tauto.
  intros. apply or_40_intro_2; tauto.
  intros. apply or_40_intro_3; tauto.
  intros. apply or_40_intro_4; tauto.
  intros. apply or_40_intro_5; tauto.
  intros. apply or_40_intro_6; tauto.
  intros. apply or_40_intro_7; tauto.
  intros. apply or_40_intro_8; tauto.
  intros. apply or_40_intro_9; tauto.
  intros. apply or_40_intro_10; tauto.
  intros. apply or_40_intro_11; tauto.
  intros. apply or_40_intro_12; tauto.
  intros. apply or_40_intro_13; tauto.
  intros. apply or_40_intro_14; tauto.
  intros. apply or_40_intro_15; tauto.
  intros. apply or_40_intro_16; tauto.
  intros. apply or_40_intro_17; tauto.
  intros. apply or_40_intro_18; tauto.
  intros. apply or_40_intro_19; tauto.
  intros. apply or_40_intro_20; tauto.
  intros. apply or_40_intro_21; tauto.
  intros. apply or_40_intro_22; tauto.
  intros. apply or_40_intro_23; tauto.
  intros. apply or_40_intro_24; tauto.
  intros. apply or_40_intro_25; tauto.
  intros. apply or_40_intro_26; tauto.
  intros. apply or_40_intro_27; tauto.
  intros. apply or_40_intro_28; tauto.
  intros. apply or_40_intro_29; tauto.
  intros. apply or_40_intro_30; tauto.
  intros. apply or_40_intro_31; tauto.
  intros. apply or_40_intro_32; tauto.
  intros. apply or_40_intro_33; tauto.
  intros. apply or_40_intro_34; tauto.
  intros. apply or_40_intro_35; tauto.
  intros. apply or_40_intro_36; tauto.
  intros. apply or_40_intro_37; tauto.
  intros. apply or_40_intro_38; tauto.
  intros. apply or_40_intro_39; tauto.
  intros. apply or_40_intro_40; tauto.
Qed.

Remark rem_2037 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2015 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2016 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1650 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2017 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1787 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1862 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2018 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2019 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2020 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2021 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2022 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1651 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2023 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1652 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2024 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1712 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1857 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2025 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1653 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1654 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2026 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1655 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2027 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2028 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1656 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2029 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2030 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1777 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1827 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2031 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1847 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1916 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2032 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2033 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2034 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1660 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1663 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1863 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2035 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1842 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2038 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2039 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2040 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2041 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2042 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2043 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2044 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2045 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2046 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2047 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2048 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2049 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2050 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2051 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2052 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2053 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2054 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2055 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2056 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2057 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2058 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2059 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2060 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2061 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2062 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2063 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2064 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2065 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2066 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2067 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2038 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2039 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1688 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2040 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2041 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2042 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2043 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2044 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2045 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2046 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2047 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1689 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2048 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1690 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2049 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2050 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2051 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2052 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1691 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1692 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1873 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2053 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2054 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1694 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2055 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2056 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2057 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1891 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2058 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2059 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2060 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2061 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2062 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2063 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1696 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1697 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2064 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2065 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2066 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2068 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2069 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2070 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2071 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2072 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2073 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2074 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2075 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2076 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2077 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2078 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2079 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2080 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2081 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2082 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2083 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2084 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2085 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2086 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2087 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2088 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2089 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1773 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2090 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2091 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2092 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2093 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2094 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2095 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2096 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2097 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2098 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2099 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2100 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2101 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2102 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2103 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2104 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2105 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2106 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2068 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2069 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2070 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2071 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2072 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2073 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2074 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2075 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2076 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2077 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2078 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2079 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2080 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2081 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2082 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2057 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2083 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2084 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2085 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2086 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2087 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2088 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2089 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2090 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2091 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2092 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2093 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2094 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2095 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2096 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2097 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2098 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2099 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2100 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2101 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2102 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2063 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2103 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2104 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2105 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2107 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2108 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2109 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2110 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2111 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2112 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2113 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2114 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2115 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2116 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2117 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2118 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2119 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2120 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2121 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2122 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2123 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2124 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2125 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2126 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2127 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2128 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2129 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2130 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2131 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2132 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2107 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2108 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1725 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2109 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2110 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2111 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2112 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1747 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2113 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2114 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2115 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1726 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2116 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1727 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2117 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2118 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2119 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1749 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1728 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1729 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1872 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1730 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2120 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2121 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1731 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2122 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2123 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2124 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1890 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1831 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2125 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2126 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2127 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2128 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2129 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1733 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2042 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2130 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2131 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2133 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2134 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2135 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2136 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2137 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2138 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2139 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2140 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2141 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2142 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2143 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2144 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2145 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2146 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2147 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2148 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2149 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2130 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2133 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1745 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2134 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2135 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2119 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2024 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2136 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2137 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2138 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2048 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1746 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2139 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1747 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2140 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2041 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2141 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2142 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1748 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1749 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1865 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1733 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2143 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2027 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1750 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2144 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2046 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2072 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2145 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2131 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2042 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2146 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2055 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2070 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1751 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1688 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2051 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2147 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2148 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2150 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2151 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2152 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2153 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2154 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2155 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2156 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2157 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2158 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2159 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2160 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2161 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2162 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2163 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2164 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2165 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2166 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2167 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2168 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2169 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2170 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2171 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2172 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2173 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2174 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2108 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2150 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2151 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2152 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2153 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2122 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2154 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2027 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2155 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2156 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2157 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2158 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2159 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2121 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2160 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2137 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2144 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1746 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2161 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1726 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2162 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1731 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2163 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2164 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2165 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2166 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2167 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2168 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1872 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2024 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2169 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2128 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2170 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2171 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2172 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1750 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1865 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2055 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2133 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2173 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2175 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2176 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2177 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2178 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2179 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2180 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2181 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2182 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2183 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2184 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2185 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2186 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2187 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2188 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2189 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2190 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2191 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2192 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2193 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2194 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2195 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2196 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2197 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2198 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2199 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2200 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2201 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1783 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2202 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2203 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2204 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2205 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2206 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2207 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2208 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2209 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1773 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2210 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2175 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2176 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2177 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2178 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2179 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2180 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2181 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2182 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2183 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2184 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2185 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2186 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2187 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2188 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2104 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2189 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2190 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2191 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2192 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2193 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2194 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1669 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2105 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2195 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1666 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2196 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2197 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2198 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2199 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2200 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2201 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2202 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2203 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2204 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2205 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1936 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2206 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2207 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2208 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2209 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2211 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2212 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2213 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2214 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2215 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2216 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2217 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2218 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2219 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2220 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2221 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2222 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2223 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2224 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_1860 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1861 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1787 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1759 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2211 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2212 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1656 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2025 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2213 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2214 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2215 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1788 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2216 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1654 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1750 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2217 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2218 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1676 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1789 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1790 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2020 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1791 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1746 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1651 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1792 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2219 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2220 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1852 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1721 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1660 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1859 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2221 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1653 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2222 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1777 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1683 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1712 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2223 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1807 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1803 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2225 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2226 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2227 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2228 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2229 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2230 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2231 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2232 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2233 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2234 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2235 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2236 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2237 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2238 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2239 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2240 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2241 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2242 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2243 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2244 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2245 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2246 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2225 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2226 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1831 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2227 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1733 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2107 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2228 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2229 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1870 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2109 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2230 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1832 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2127 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1833 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2231 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2130 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2232 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1834 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1835 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2233 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1836 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2234 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2235 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1837 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2108 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2236 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2088 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2237 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2238 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2239 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2240 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2241 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2242 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2243 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1839 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1840 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2038 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2244 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2245 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2247 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2248 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2249 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2250 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2251 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2252 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2253 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2254 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2255 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2256 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2257 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2258 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2259 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2260 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1592 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2261 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1658 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2262 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2263 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2264 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2265 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2266 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2267 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2247 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2248 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1842 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2176 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1803 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2249 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2250 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2251 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1912 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2196 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2194 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1843 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2252 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1844 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2253 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2254 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2255 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1934 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1666 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1845 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2256 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1637 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2257 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2258 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1846 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2259 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2204 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2186 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1913 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2260 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2261 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2262 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2181 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2263 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2195 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1848 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1849 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2264 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2265 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2266 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2268 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2269 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2270 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2271 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2272 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2273 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2274 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2275 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2276 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2277 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2278 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2279 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2280 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2239 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2268 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1747 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2068 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1749 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2125 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2235 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2269 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1869 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2073 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2095 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2270 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2129 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2271 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2234 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1692 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2131 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2272 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2088 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2273 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1867 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1835 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2274 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2275 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1832 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2169 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2098 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2086 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1886 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2229 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2276 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2277 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2243 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2278 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2081 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2232 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1690 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2059 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2245 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2279 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2281 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2282 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2283 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2284 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2285 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2286 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2287 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2288 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2289 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2290 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2291 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2292 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2293 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2294 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2295 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2296 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2242 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2281 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1865 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2282 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2137 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2128 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2283 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2054 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2284 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2167 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2285 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1866 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2157 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1867 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2286 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2045 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2055 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1689 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1868 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1869 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2287 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1870 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2288 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2289 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1871 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2171 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2290 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2076 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2291 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2043 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2278 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2292 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2293 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2294 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2087 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1694 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1873 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2062 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2039 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2295 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2297 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2298 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2299 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2300 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2301 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2302 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2303 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1679 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2304 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2305 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2306 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1625 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2307 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2308 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2309 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2310 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2109 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2152 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2139 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2297 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2298 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2114 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2170 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2070 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2299 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2300 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2301 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2168 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2302 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2129 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2303 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2304 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2138 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2072 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2305 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2124 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2157 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1728 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2306 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2172 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2161 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2156 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2307 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2308 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2115 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2146 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2073 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2123 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2309 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2167 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2080 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1748 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2048 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2046 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2134 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2083 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2311 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2312 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2313 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2314 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2315 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2316 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2317 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2318 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2319 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2320 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2240 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2242 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1695 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2236 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2118 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2126 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2233 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1690 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2311 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2123 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2312 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1869 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2115 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1886 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2313 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2314 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2042 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1692 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1887 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1888 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2291 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1889 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2315 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1867 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1870 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2128 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2316 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2317 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2318 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1840 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2277 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2319 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2230 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2292 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2095 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1891 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2060 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2038 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2059 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2321 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2322 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2323 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2324 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2325 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1773 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2326 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2327 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2328 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2329 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2330 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2331 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2332 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2333 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2227 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2321 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2146 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2322 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1748 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2109 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2323 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2096 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1868 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2297 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2324 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2091 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2309 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2243 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2325 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1691 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2134 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2102 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2326 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2088 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2293 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1834 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2082 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2074 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2327 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2152 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2328 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2085 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2230 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2329 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2068 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2236 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2330 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2282 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2099 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2331 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2061 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2040 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2332 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2104 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2334 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1662 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2335 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2336 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2337 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1658 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2338 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2339 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2340 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1702 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2341 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2342 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2343 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2344 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2345 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1605 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2346 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2347 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2348 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2349 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1590 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2350 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_1906 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1907 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1800 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1904 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2334 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2335 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1825 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2336 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2337 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2338 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2339 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1718 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1741 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1895 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1693 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2340 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2341 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2342 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1740 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1920 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2343 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1921 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1692 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1714 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1719 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2221 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2344 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1739 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2345 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1898 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1905 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2346 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1768 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2347 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1737 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1923 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1924 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2348 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1909 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2349 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2351 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2352 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2353 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2354 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2355 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1815 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2356 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2357 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1649 epsilon_m_q4_mknows_current X3).
Defined.

Remark rem_2358 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2359 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2360 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2361 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2362 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2363 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2364 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2365 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2268 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2351 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2027 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2069 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1746 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2169 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2352 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2353 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1866 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2092 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2087 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2354 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2172 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2275 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2355 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1689 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2173 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2356 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2091 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2270 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2289 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1832 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2357 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2358 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2359 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2360 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2100 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2079 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1867 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2361 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2362 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2278 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2074 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2363 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2090 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2364 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2054 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2295 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2253 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2257 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2366 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2367 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1598 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2368 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1716 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2369 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2370 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2371 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1608 epsilon_m_q4_mknows_current X2).
Defined.

Remark rem_2372 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1944 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2373 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q4_mknows_current. tauto.
  exact (rem_1596 epsilon_m_q4_mknows_current X1).
Defined.

Remark rem_2374 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2236 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2282 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2048 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2328 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2304 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2123 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2293 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2063 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2366 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2307 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2367 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2076 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2301 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2095 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2368 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2369 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2046 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2057 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2370 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2317 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2285 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1887 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2371 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2087 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1868 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2167 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2372 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2373 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2312 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2061 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2098 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2316 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2324 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2290 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2078 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_1691 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2047 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2056 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2040 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2103 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Inductive or_18(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18:Prop) : Prop :=
    or_18_intro_1 : H1 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_2 : H2 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_3 : H3 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_4 : H4 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_5 : H5 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_6 : H6 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_7 : H7 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_8 : H8 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_9 : H9 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_10 : H10 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_11 : H11 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_12 : H12 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_13 : H13 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_14 : H14 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_15 : H15 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_16 : H16 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_17 : H17 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
  | or_18_intro_18 : H18 -> (or_18 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18)
.

Remark rem_2375 : forall X1 X2 X3:term, auto__q4 (nonceb_current X1 X2 X3) -> or_18
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_18_intro_1; tauto.
  intros. apply or_18_intro_2; tauto.
  intros. apply or_18_intro_3; tauto.
  intros. apply or_18_intro_4; tauto.
  intros. apply or_18_intro_5; tauto.
  intros. apply or_18_intro_6; tauto.
  intros. apply or_18_intro_7; tauto.
  intros. apply or_18_intro_8; tauto.
  intros. apply or_18_intro_9; tauto.
  intros. apply or_18_intro_10; tauto.
  intros. apply or_18_intro_11; tauto.
  intros. apply or_18_intro_12; tauto.
  intros. apply or_18_intro_13; tauto.
  intros. apply or_18_intro_14; tauto.
  intros. apply or_18_intro_15; tauto.
  intros. apply or_18_intro_16; tauto.
  intros. apply or_18_intro_17; tauto.
  intros. apply or_18_intro_18; tauto.
Qed.

Remark rem_2376 : (forall X:term, auto__q4 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q4_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2375 X1 X2 X3 H);  intros.
  apply (rem_2037 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2067 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2106 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2132 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2149 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2174 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2210 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2224 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2246 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2267 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2280 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2296 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2310 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2320 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2333 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2350 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2365 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
  apply (rem_2374 epsilon_m_q4_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2377 : auto__q4 server -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2378 : auto__q4 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2379 : auto__q4 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2380 : auto__q4 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2381 : auto__q4 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2382 : auto__q4 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2383 : auto__q4 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2384 : auto__q4 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

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

Remark rem_2388 : forall X1:term, auto__q4 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m_q4_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_2384  H).
   intro H. elim (rem_2380  H).
  intros X1 X2;  exact (rem_2014 epsilon_m_q4_mknows_current X1 X2).
  intros X1 X2;  exact (rem_1980 epsilon_m_q4_mknows_current X1 X2).
   intro H. elim (rem_2379  H).
  intros X1 X2;  exact (rem_1635 epsilon_m_q4_mknows_current X1 X2).
   intro H. elim (rem_2378  H).
  intros X1 X2;  exact (rem_2006 epsilon_m_q4_mknows_current X1 X2).
  intros X1 X2. intro H. elim (rem_2386 X1 X2 H).
  intros X1 X2 X3;  exact (rem_2376 epsilon_m_q4_mknows_current X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_2385 X1 X2 X3 H).
   intro H. elim (rem_2381  H).
   intro H. elim (rem_2383  H).
  intros X1;  exact (rem_1601 epsilon_m_q4_mknows_current X1).
   intro H. elim (rem_2377  H).
  intros X1 X2 X3;  exact (rem_1942 epsilon_m_q4_mknows_current X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_2387 X1 X2 X3 H).
   intro H. elim (rem_2382  H).
Qed.

Remark rem_2389 : forall X1:term, auto__q3 alice -> auto__q4 X1 -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2388 X1)). tauto.
Qed.

Remark rem_2390 : auto__q4 alice -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2384 H);  intros.
Qed.

Remark rem_2391 : forall X1:term, auto__q2 X1 -> auto__q4 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 alice -> False). tauto.
  exact (rem_2390).
Qed.

Remark rem_2392 : forall X1:term, auto__q4 alice -> auto__q2 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q4 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2391 X1).
Qed.

Remark rem_2393 : forall X1:term, auto__q1 alice -> auto__q4 X1 -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2388 X1)). tauto.
Qed.

Remark rem_2394 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1595).
Defined.

Remark rem_2395 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2396 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1589).
Defined.

Remark rem_2397 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2398 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q2 X1 -> auto__q1 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1604).
Defined.

Remark rem_2399 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2400 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q3 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1814).
Defined.

Remark rem_2401 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2402 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2403 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2404 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2405 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2406 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2407 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2408 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2409 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2410 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2411 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (key X1 X2) -> auto__q2 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1619 X1 X2 H);  intros.
  apply (rem_2395 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2397 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2399 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2401 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2402 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2403 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2404 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2405 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2406 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2407 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2408 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2409 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2410 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2412 : forall X1 X2:term, auto__q3 (key X1 X2) -> or_1
    (auto__q2 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_2413 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 (key X1 X2) -> auto_knows_current (key X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2412 X1 X2 H);  intros.
  apply (rem_2411 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2414 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1591).
Defined.

Remark rem_2415 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2416 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2417 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2418 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2419 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2420 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2421 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2422 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2423 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2424 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2425 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2415 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2416 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2417 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2418 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2419 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2420 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2421 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2422 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2423 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2424 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2426 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q1 X1 -> auto__q3 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1597).
Defined.

Remark rem_2427 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2428 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2429 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2430 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2431 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2432 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2433 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2434 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2435 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2436 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2437 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2427 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2428 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2429 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2430 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2431 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2432 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2433 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2434 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2435 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2436 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2438 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2439 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2440 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2441 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2442 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2443 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2444 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2445 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2446 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2447 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2448 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2438 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2439 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2440 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2441 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2442 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2443 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2444 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2445 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2446 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2447 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2449 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2450 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2451 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2452 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2453 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2454 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2455 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2456 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2457 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2458 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2459 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2449 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2450 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2451 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2452 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2453 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2454 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2455 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2456 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2457 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2458 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2460 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1678).
Defined.

Remark rem_2461 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2462 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2463 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2464 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2465 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2466 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2467 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2468 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2469 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2470 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q4 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1715).
Defined.

Remark rem_2471 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2472 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2461 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2462 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2463 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2464 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2465 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2466 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2467 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2468 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2469 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2471 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2473 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2474 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2475 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2476 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2477 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2478 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2479 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2480 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2481 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2482 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2483 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2473 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2474 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2475 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2476 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2477 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2478 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2479 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2480 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2481 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2482 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2484 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2485 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2486 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2487 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2488 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2489 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2490 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2491 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2492 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2493 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2494 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2484 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2485 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2486 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2487 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2488 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2489 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2490 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2491 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2492 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2493 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2495 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2496 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2497 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2498 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2499 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2500 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2501 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2502 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2503 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2504 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2495 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2496 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2497 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2498 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2499 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2500 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2435 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2501 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2502 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2503 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2505 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2506 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q1 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1607).
Defined.

Remark rem_2507 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2508 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2509 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2510 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2511 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2512 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2513 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2514 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2515 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2516 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2505 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2507 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2508 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2509 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2510 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2511 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2512 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2513 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2514 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2515 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2517 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2518 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2519 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2520 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2521 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2522 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2523 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2524 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2525 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2517 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2465 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2518 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2519 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2520 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2521 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2466 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2522 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2523 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2524 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2526 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2527 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2528 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2529 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2530 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2531 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2532 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2533 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2526 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2527 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2528 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2446 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2529 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2499 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2496 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2530 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2531 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2532 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2534 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q3 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1624).
Defined.

Remark rem_2535 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2536 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2537 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1657).
Defined.

Remark rem_2538 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2537 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2539 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2540 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2541 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2542 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2543 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2544 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2535 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2536 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2538 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2539 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2540 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2465 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2462 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2541 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2542 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2543 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2545 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2546 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2547 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2548 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2549 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2550 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2551 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2530 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2545 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2546 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2443 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2547 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2548 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2431 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2549 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2499 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2550 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2552 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2553 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2554 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2555 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2556 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2557 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2558 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2559 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2560 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2561 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2562 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2552 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2553 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2554 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2555 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2556 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2557 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2558 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2559 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2560 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2561 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2563 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2564 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2565 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2566 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2567 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2568 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2569 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2570 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2571 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2563 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2564 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2445 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2565 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2566 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2567 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2476 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2568 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2569 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2570 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2572 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2573 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2574 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2575 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2576 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2577 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2578 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2572 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2444 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2573 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2574 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2443 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2575 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2430 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2576 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2498 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2577 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2579 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2580 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2581 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2582 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2583 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2584 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2585 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2579 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2542 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2580 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2581 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2582 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2523 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2469 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2517 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2583 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2584 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2586 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2587 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2588 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2589 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2590 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2591 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2592 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2593 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2586 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2587 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2588 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2489 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2589 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2590 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2419 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2451 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2591 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2592 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2594 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2595 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2596 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2597 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2598 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2599 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2600 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2594 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2539 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2595 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2596 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2597 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2519 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2464 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2598 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2581 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2599 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2601 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2602 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2603 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1782).
Defined.

Remark rem_2604 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2603 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2605 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2606 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2607 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2608 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2609 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2610 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2601 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2602 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2604 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2605 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2606 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2597 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2539 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2607 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2608 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2609 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2611 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2612 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2613 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2614 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2615 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2616 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2617 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2618 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2611 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2612 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2592 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2560 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2613 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2614 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2615 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2458 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2616 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2617 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2619 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2620 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2621 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2622 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2623 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2619 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2620 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2621 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2444 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2545 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2431 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2428 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2475 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2496 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2622 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2624 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2625 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2626 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2627 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2628 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2629 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2630 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2631 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2632 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2633 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_current X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_1646 X1 X2 X3 H);  intros.
  apply (rem_2570 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2624 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2625 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2626 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2627 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2628 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2629 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2630 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2631 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2632 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Inductive or_23(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23:Prop) : Prop :=
    or_23_intro_1 : H1 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_2 : H2 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_3 : H3 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_4 : H4 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_5 : H5 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_6 : H6 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_7 : H7 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_8 : H8 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_9 : H9 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_10 : H10 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_11 : H11 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_12 : H12 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_13 : H13 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_14 : H14 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_15 : H15 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_16 : H16 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_17 : H17 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_18 : H18 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_19 : H19 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_20 : H20 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_21 : H21 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_22 : H22 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
  | or_23_intro_23 : H23 -> (or_23 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23)
.

Remark rem_2634 : forall X1 X2 X3:term, auto__q3 (session_current X1 X2 X3) -> or_23
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_23_intro_1; tauto.
  intros. apply or_23_intro_2; tauto.
  intros. apply or_23_intro_3; tauto.
  intros. apply or_23_intro_4; tauto.
  intros. apply or_23_intro_5; tauto.
  intros. apply or_23_intro_6; tauto.
  intros. apply or_23_intro_7; tauto.
  intros. apply or_23_intro_8; tauto.
  intros. apply or_23_intro_9; tauto.
  intros. apply or_23_intro_10; tauto.
  intros. apply or_23_intro_11; tauto.
  intros. apply or_23_intro_12; tauto.
  intros. apply or_23_intro_13; tauto.
  intros. apply or_23_intro_14; tauto.
  intros. apply or_23_intro_15; tauto.
  intros. apply or_23_intro_16; tauto.
  intros. apply or_23_intro_17; tauto.
  intros. apply or_23_intro_18; tauto.
  intros. apply or_23_intro_19; tauto.
  intros. apply or_23_intro_20; tauto.
  intros. apply or_23_intro_21; tauto.
  intros. apply or_23_intro_22; tauto.
  intros. apply or_23_intro_23; tauto.
Qed.

Remark rem_2635 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 (session_current X1 X2 X3) -> auto_knows_current (session_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2634 X1 X2 X3 H);  intros.
  apply (rem_2425 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2437 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2448 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2459 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2472 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2483 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2494 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2504 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2516 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2525 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2533 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2544 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2551 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2562 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2571 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2578 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2585 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2593 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2600 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2610 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2618 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2623 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2633 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2636 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1:term, auto__q3 X1 -> auto__q4 X1 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1943).
Defined.

Remark rem_2637 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2638 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2639 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2640 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2641 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2642 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2643 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2644 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2645 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q3 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_2637 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2638 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2639 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2640 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2641 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2642 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2643 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2644 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2646 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X2:term, auto__q2 X2 -> auto__q1 X2 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1661).
Defined.

Remark rem_2647 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2648 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2649 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2650 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2651 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2652 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2653 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2654 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2655 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (crypt X1 X2) -> auto__q4 X1 -> auto__q1 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_2647 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2648 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2649 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2650 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2651 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2652 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2653 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2654 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2656 : forall X1 X2:term, auto__q3 (crypt X1 X2) -> or_2
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q1 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_2_intro_1; tauto.
  intros. apply or_2_intro_2; tauto.
Qed.

Remark rem_2657 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 (crypt X1 X2) -> auto_knows_current (crypt X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2656 X1 X2 H);  intros.
  apply (rem_2645 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2655 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2658 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2659 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q3 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2402 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2658 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2403 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2638 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2660 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2661 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2662 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q4 X1 -> auto__q2 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2652 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2660 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2661 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2650 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2663 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2664 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2665 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q1 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2409 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2663 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2404 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2664 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2666 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2667 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2668 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q2 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2666 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2404 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2667 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2409 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2669 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2670 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2671 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2672 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X2 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2673 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q4 X1 -> auto__q3 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2669 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2670 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2671 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2672 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2674 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2675 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto_knows_current (cons X1 X2) -> auto__q4 X1 -> auto__q4 X2 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_1080 X1 X2 H);  intros.
  apply (rem_2408 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2674 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2397 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2648 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2676 : forall X1 X2:term, auto__q3 (cons X1 X2) -> or_6
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_2677 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2:term, auto__q3 (cons X1 X2) -> auto_knows_current (cons X1 X2) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2. intro H. intros.
  elim (rem_2676 X1 X2 H);  intros.
  apply (rem_2659 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2662 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2665 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2668 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2673 epsilon_m_q3_mknows_current X1 X2);  tauto.
  apply (rem_2675 epsilon_m_q3_mknows_current X1 X2);  tauto.
Defined.

Remark rem_2678 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2679 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2680 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2681 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2682 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2683 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2684 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2685 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2686 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2687 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2688 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q1 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1648).
Defined.

Remark rem_2689 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2688 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2690 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2691 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2692 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2693 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2400 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2694 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2695 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2696 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2697 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2698 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2699 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2700 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2701 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2702 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2703 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2704 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2705 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2706 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2636 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2707 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2678 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2679 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2427 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2680 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2481 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2681 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2682 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2683 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2684 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2685 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2686 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2428 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2687 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2429 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2689 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2690 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2691 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2496 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2430 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2431 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2692 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2432 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2693 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2694 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2433 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2695 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2696 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2444 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2697 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2698 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2699 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2700 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2701 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2702 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2703 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2435 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2436 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2704 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2705 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2706 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2708 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2709 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2710 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2711 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2712 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2713 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q1 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1876).
Defined.

Remark rem_2714 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q1 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2713 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2715 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2716 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2717 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2718 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2719 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2720 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q2 X3 -> auto__q3 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1772).
Defined.

Remark rem_2721 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2720 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2722 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2723 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2724 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2725 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2726 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2727 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2728 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2729 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2730 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2731 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2732 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2733 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2506 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2734 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2735 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2736 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2737 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2738 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2739 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2740 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2741 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2742 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2743 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2557 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2558 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2708 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2555 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2709 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2710 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2711 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2712 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2714 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2715 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2716 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2717 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2718 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2719 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2631 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2721 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2722 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2723 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2724 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2725 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2726 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2727 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2728 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2729 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2730 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2731 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2732 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2733 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2734 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2735 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2556 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2736 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2737 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2738 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2739 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2509 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2740 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2741 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2560 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2742 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2744 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2745 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X3:term, auto__q3 X3 -> auto__q4 X3 -> False. (* Cut history. *)
Proof.  intros epsilon_m_q3_mknows_current. exact (rem_1701).
Defined.

Remark rem_2746 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2745 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2747 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2748 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2749 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2750 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2751 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2752 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2753 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2754 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2755 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2756 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2757 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2758 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2759 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2760 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2761 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2762 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2763 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2764 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2765 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2766 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2767 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2768 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2769 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2770 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2771 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2772 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2773 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2774 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2775 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2776 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2777 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2778 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2454 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2455 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2744 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2452 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2746 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2747 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2748 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2749 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2750 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2751 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2752 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2753 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2754 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2755 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2756 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2757 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2758 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2759 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2760 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2761 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2762 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2763 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2764 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2765 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2766 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2767 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2710 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2768 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2769 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2770 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2453 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2771 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2772 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2773 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2774 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2775 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2513 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2776 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2457 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2777 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2779 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2780 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2781 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2782 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2783 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2537 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2784 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2785 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2786 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2787 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2426 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2788 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2789 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2790 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2791 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2792 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2470 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2793 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2745 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2794 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2795 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2796 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2603 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2797 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2798 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2799 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2800 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2801 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2779 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2780 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2517 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2781 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2770 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2782 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2783 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2580 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2784 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2785 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2786 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2465 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2598 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2518 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2787 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2788 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2789 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2582 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2519 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2520 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2790 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2521 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2497 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2463 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2466 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2422 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2791 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2597 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2792 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2793 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2794 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2795 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2796 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2797 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2595 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2523 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2524 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2798 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2799 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2800 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2802 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2803 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2804 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2805 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2720 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2806 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2807 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2808 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2809 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2810 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2811 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2812 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2813 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2814 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2815 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2816 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2394 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2817 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2818 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2819 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2820 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2821 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2822 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2823 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2824 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2825 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2460 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2826 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2827 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2 -> auto__q2 X1 -> auto__q4 X1 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2396 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2828 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2452 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2802 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2803 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2804 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2805 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2751 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2806 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2807 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2808 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2809 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2718 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2810 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2811 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2774 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2569 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2709 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2812 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2813 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2814 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2768 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2815 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2760 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2816 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2817 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2818 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2819 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2715 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2820 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2752 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2821 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2822 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2710 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2823 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2731 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2824 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2825 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2708 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2722 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2826 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2827 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2829 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2745 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2830 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2831 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2832 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2833 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X3 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2603 epsilon_m_q3_mknows_current X3).
Defined.

Remark rem_2834 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2534 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2835 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2836 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q1 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2398 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2837 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2838 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2839 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2840 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X1 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2414 epsilon_m_q3_mknows_current X1).
Defined.

Remark rem_2841 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 X3 -> False. (* Split. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q1 X2 -> False). clear  epsilon_m_q3_mknows_current. tauto.
  exact (rem_2646 epsilon_m_q3_mknows_current X2).
Defined.

Remark rem_2842 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (nonceb_current X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2036 X1 X2 X3 H);  intros.
  apply (rem_2782 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2422 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2829 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2785 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2744 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2456 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2468 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2830 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2762 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2831 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2832 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2765 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2833 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2834 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2501 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2513 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2449 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2749 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2772 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2755 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2835 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2836 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2530 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2541 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2748 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2837 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2559 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2774 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2838 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2517 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2451 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2839 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2598 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2840 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2607 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2770 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2841 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2458 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2789 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2586 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2843 : forall X1 X2 X3:term, auto__q3 (nonceb_current X1 X2 X3) -> or_6
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_6_intro_1; tauto.
  intros. apply or_6_intro_2; tauto.
  intros. apply or_6_intro_3; tauto.
  intros. apply or_6_intro_4; tauto.
  intros. apply or_6_intro_5; tauto.
  intros. apply or_6_intro_6; tauto.
Qed.

Remark rem_2844 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2843 X1 X2 X3 H);  intros.
  apply (rem_2707 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2743 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2778 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2801 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2828 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2842 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

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

Remark rem_2846 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2847 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2848 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2849 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2850 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2851 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2852 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2853 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2854 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2855 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2856 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2857 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2858 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2859 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2860 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2861 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2862 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2863 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2864 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2865 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2866 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2867 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2868 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2869 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2870 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2871 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2872 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2873 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2874 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2875 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2876 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2877 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2878 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2879 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2880 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2881 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2882 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2883 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2884 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2885 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2886 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2887 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2888 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2889 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2890 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2891 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2892 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2893 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2894 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2895 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2896 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2897 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2898 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2899 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2900 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2901 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2902 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2903 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2904 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2905 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2906 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q3 X2 -> auto__q1 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2907 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2908 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Remark rem_2909 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto_knows_current (session_old X1 X2 X3) -> auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2845 X1 X2 X3 H);  intros.
Defined.

Inductive or_64(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64:Prop) : Prop :=
    or_64_intro_1 : H1 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_2 : H2 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_3 : H3 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_4 : H4 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_5 : H5 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_6 : H6 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_7 : H7 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_8 : H8 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_9 : H9 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_10 : H10 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_11 : H11 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_12 : H12 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_13 : H13 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_14 : H14 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_15 : H15 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_16 : H16 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_17 : H17 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_18 : H18 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_19 : H19 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_20 : H20 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_21 : H21 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_22 : H22 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_23 : H23 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_24 : H24 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_25 : H25 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_26 : H26 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_27 : H27 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_28 : H28 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_29 : H29 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_30 : H30 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_31 : H31 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_32 : H32 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_33 : H33 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_34 : H34 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_35 : H35 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_36 : H36 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_37 : H37 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_38 : H38 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_39 : H39 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_40 : H40 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_41 : H41 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_42 : H42 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_43 : H43 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_44 : H44 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_45 : H45 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_46 : H46 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_47 : H47 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_48 : H48 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_49 : H49 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_50 : H50 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_51 : H51 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_52 : H52 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_53 : H53 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_54 : H54 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_55 : H55 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_56 : H56 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_57 : H57 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_58 : H58 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_59 : H59 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_60 : H60 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_61 : H61 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_62 : H62 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_63 : H63 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
  | or_64_intro_64 : H64 -> (or_64 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 H28 H29 H30 H31 H32 H33 H34 H35 H36 H37 H38 H39 H40 H41 H42 H43 H44 H45 H46 H47 H48 H49 H50 H51 H52 H53 H54 H55 H56 H57 H58 H59 H60 H61 H62 H63 H64)
.

Remark rem_2910 : forall X1 X2 X3:term, auto__q3 (session_old X1 X2 X3) -> or_64
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q3 X1 /\ auto__q1 X2 /\ auto__q2 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_64_intro_1; tauto.
  intros. apply or_64_intro_2; tauto.
  intros. apply or_64_intro_3; tauto.
  intros. apply or_64_intro_4; tauto.
  intros. apply or_64_intro_5; tauto.
  intros. apply or_64_intro_6; tauto.
  intros. apply or_64_intro_7; tauto.
  intros. apply or_64_intro_8; tauto.
  intros. apply or_64_intro_9; tauto.
  intros. apply or_64_intro_10; tauto.
  intros. apply or_64_intro_11; tauto.
  intros. apply or_64_intro_12; tauto.
  intros. apply or_64_intro_13; tauto.
  intros. apply or_64_intro_14; tauto.
  intros. apply or_64_intro_15; tauto.
  intros. apply or_64_intro_16; tauto.
  intros. apply or_64_intro_17; tauto.
  intros. apply or_64_intro_18; tauto.
  intros. apply or_64_intro_19; tauto.
  intros. apply or_64_intro_20; tauto.
  intros. apply or_64_intro_21; tauto.
  intros. apply or_64_intro_22; tauto.
  intros. apply or_64_intro_23; tauto.
  intros. apply or_64_intro_24; tauto.
  intros. apply or_64_intro_25; tauto.
  intros. apply or_64_intro_26; tauto.
  intros. apply or_64_intro_27; tauto.
  intros. apply or_64_intro_28; tauto.
  intros. apply or_64_intro_29; tauto.
  intros. apply or_64_intro_30; tauto.
  intros. apply or_64_intro_31; tauto.
  intros. apply or_64_intro_32; tauto.
  intros. apply or_64_intro_33; tauto.
  intros. apply or_64_intro_34; tauto.
  intros. apply or_64_intro_35; tauto.
  intros. apply or_64_intro_36; tauto.
  intros. apply or_64_intro_37; tauto.
  intros. apply or_64_intro_38; tauto.
  intros. apply or_64_intro_39; tauto.
  intros. apply or_64_intro_40; tauto.
  intros. apply or_64_intro_41; tauto.
  intros. apply or_64_intro_42; tauto.
  intros. apply or_64_intro_43; tauto.
  intros. apply or_64_intro_44; tauto.
  intros. apply or_64_intro_45; tauto.
  intros. apply or_64_intro_46; tauto.
  intros. apply or_64_intro_47; tauto.
  intros. apply or_64_intro_48; tauto.
  intros. apply or_64_intro_49; tauto.
  intros. apply or_64_intro_50; tauto.
  intros. apply or_64_intro_51; tauto.
  intros. apply or_64_intro_52; tauto.
  intros. apply or_64_intro_53; tauto.
  intros. apply or_64_intro_54; tauto.
  intros. apply or_64_intro_55; tauto.
  intros. apply or_64_intro_56; tauto.
  intros. apply or_64_intro_57; tauto.
  intros. apply or_64_intro_58; tauto.
  intros. apply or_64_intro_59; tauto.
  intros. apply or_64_intro_60; tauto.
  intros. apply or_64_intro_61; tauto.
  intros. apply or_64_intro_62; tauto.
  intros. apply or_64_intro_63; tauto.
  intros. apply or_64_intro_64; tauto.
Qed.

Remark rem_2911 : (forall X:term, auto__q3 X -> auto_knows_current X -> False)
    -> forall X1 X2 X3:term, auto__q3 (session_old X1 X2 X3) -> auto_knows_current (session_old X1 X2 X3) -> False. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q3_mknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_2910 X1 X2 X3 H);  intros.
  apply (rem_2846 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2847 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2848 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2849 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2850 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2851 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2852 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2853 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2854 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2855 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2856 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2857 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2858 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2859 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2860 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2861 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2862 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2863 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2864 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2865 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2866 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2867 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2868 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2869 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2870 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2871 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2872 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2873 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2874 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2875 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2876 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2877 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2878 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2879 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2880 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2881 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2882 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2883 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2884 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2885 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2886 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2887 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2888 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2889 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2890 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2891 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2892 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2893 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2894 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2895 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2896 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2897 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2898 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2899 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2900 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2901 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2902 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2903 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2904 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2905 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2906 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2907 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2908 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
  apply (rem_2909 epsilon_m_q3_mknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_2912 : auto__q3 server -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_2914 : auto__q3 nil -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2915 : auto__q3 i -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2916 : auto__q3 bob -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2917 : auto__q3 prv -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_2919 : auto__q3 sym -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2920 : auto__q3 pub -> or_0.
Proof.
  intros. inversion H.
Qed.

Remark rem_2921 : auto__q3 alice -> or_0.
Proof.
  intros. inversion H.
Qed.

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

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

Remark rem_2924 : forall X1:term, auto__q3 X1 -> auto_knows_current X1 -> False. (* Induct. *)
Proof.
  fix epsilon_m_q3_mknows_current 1.
  intro X. case X.
   intro H. elim (rem_2921  H).
   intro H. elim (rem_2916  H).
  intros X1 X2;  exact (rem_2677 epsilon_m_q3_mknows_current X1 X2).
  intros X1 X2;  exact (rem_2657 epsilon_m_q3_mknows_current X1 X2).
   intro H. elim (rem_2915  H).
  intros X1 X2;  exact (rem_2413 epsilon_m_q3_mknows_current X1 X2).
   intro H. elim (rem_2914  H).
  intros X1 X2. intro H. elim (rem_2918 X1 X2 H).
  intros X1 X2. intro H. elim (rem_2923 X1 X2 H).
  intros X1 X2 X3;  exact (rem_2844 epsilon_m_q3_mknows_current X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_2922 X1 X2 X3 H).
   intro H. elim (rem_2917  H).
   intro H. elim (rem_2920  H).
  intros X1. intro H. elim (rem_2913 X1 H).
   intro H. elim (rem_2912  H).
  intros X1 X2 X3;  exact (rem_2635 epsilon_m_q3_mknows_current X1 X2 X3).
  intros X1 X2 X3;  exact (rem_2911 epsilon_m_q3_mknows_current X1 X2 X3).
   intro H. elim (rem_2919  H).
Qed.

Remark rem_2925 : forall X1:term, auto__q2 alice -> auto__q3 X1 -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2924 X1)). tauto.
Qed.

Remark rem_2926 : auto__q3 alice -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2921 H);  intros.
Qed.

Remark rem_2927 : forall X1:term, auto__q1 X1 -> auto__q3 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_2926).
Qed.

Remark rem_2928 : forall X1:term, auto__q3 alice -> auto__q1 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2927 X1).
Qed.

Remark rem_2929 : auto__q2 alice -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_648 H);  intros.
Qed.

Remark rem_2930 : forall X1:term, auto__q1 X1 -> auto__q2 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_2929).
Qed.

Remark rem_2931 : forall X1:term, auto__q2 alice -> auto__q1 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q2 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2930 X1).
Qed.

Remark rem_2932 : forall X1:term, auto__q2 X1 -> auto__q3 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_2926).
Qed.

Remark rem_2933 : forall X1:term, auto__q3 alice -> auto__q2 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2932 X1).
Qed.

Remark rem_2934 : forall X1:term, auto__q2 alice -> auto__q4 X1 -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2388 X1)). tauto.
Qed.

Remark rem_2935 : forall X1:term, auto__q3 X1 -> auto__q4 alice -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2924 X1)). tauto.
Qed.

Remark rem_2936 : forall X1:term, auto__q4 alice -> auto__q3 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 X1 -> auto__q4 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2935 X1).
Qed.

Remark rem_2937 : forall X1:term, auto__q1 alice -> auto__q3 X1 -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2924 X1)). tauto.
Qed.

Remark rem_2938 : forall X1:term, auto__q3 X1 -> auto__q3 alice -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2924 X1)). tauto.
Qed.

Remark rem_2939 : forall X1:term, auto__q3 alice -> auto__q3 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 X1 -> auto__q3 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2938 X1).
Qed.

Remark rem_2940 : forall X1:term, auto__q2 X1 -> auto__q2 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_2929).
Qed.

Remark rem_2941 : forall X1:term, auto__q2 alice -> auto__q2 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q2 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2940 X1).
Qed.

Remark rem_2942 : forall X1:term, auto__q1 X1 -> auto__q4 alice -> auto_knows_current X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 alice -> False). tauto.
  exact (rem_2390).
Qed.

Remark rem_2943 : forall X1:term, auto__q4 alice -> auto__q1 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q4 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2942 X1).
Qed.

Remark rem_2944 : forall X1:term, auto__q4 X1 -> auto__q4 alice -> auto_knows_current X1 -> False. (* Subsumed by epsilon clause. *)
Proof.
  intros X1. intros.
  assert (HH:=(rem_2388 X1)). tauto.
Qed.

Remark rem_2945 : forall X1:term, auto__q4 alice -> auto__q4 X1 -> auto_knows_current X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q4 X1 -> auto__q4 alice -> auto_knows_current X1 -> False). tauto. exact (rem_2944 X1).
Qed.

Inductive or_14(H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14:Prop) : Prop :=
    or_14_intro_1 : H1 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_2 : H2 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_3 : H3 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_4 : H4 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_5 : H5 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_6 : H6 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_7 : H7 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_8 : H8 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_9 : H9 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_10 : H10 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_11 : H11 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_12 : H12 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_13 : H13 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
  | or_14_intro_14 : H14 -> (or_14 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14)
.

Remark rem_2946 : forall X1 X2:term, auto_alice_key_current X1 X2 -> or_14
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_14_intro_1; tauto.
  intros. apply or_14_intro_2; tauto.
  intros. apply or_14_intro_3; tauto.
  intros. apply or_14_intro_4; tauto.
  intros. apply or_14_intro_5; tauto.
  intros. apply or_14_intro_6; tauto.
  intros. apply or_14_intro_7; tauto.
  intros. apply or_14_intro_8; tauto.
  intros. apply or_14_intro_9; tauto.
  intros. apply or_14_intro_10; tauto.
  intros. apply or_14_intro_11; tauto.
  intros. apply or_14_intro_12; tauto.
  intros. apply or_14_intro_13; tauto.
  intros. apply or_14_intro_14; tauto.
Qed.

Remark rem_2947 : 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_2946 alice X1 H);  intros.
  apply (rem_2389 X1);  tauto.
  apply (rem_2392 X1);  tauto.
  apply (rem_2393 X1);  tauto.
  apply (rem_2925 X1);  tauto.
  apply (rem_2928 X1);  tauto.
  apply (rem_2931 X1);  tauto.
  apply (rem_2933 X1);  tauto.
  apply (rem_2934 X1);  tauto.
  apply (rem_2936 X1);  tauto.
  apply (rem_2937 X1);  tauto.
  apply (rem_2939 X1);  tauto.
  apply (rem_2941 X1);  tauto.
  apply (rem_2943 X1);  tauto.
  apply (rem_2945 X1);  tauto.
Qed.

Remark rem_2948 : 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_2947 X1).
Qed.

Remark rem_2949 : 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. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_alice_key_current alice X1 -> auto_knows_current X1 -> auto___query__intruder_knows_session_key_as_seen_by_alice). tauto. exact (rem_2948 X1).
Qed.

Remark rem_2950 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old.  tauto.
Defined.

Remark rem_2951 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old server. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_server_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2952 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 server -> auto_knows_old server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_655 H);  intros.
  apply (rem_2951 epsilon_m_q1_pknows_old);  tauto.
Defined.

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

Remark rem_2954 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1. intros A1.
  cut (auto__q1 X1). 2:apply (rem_2953 epsilon_m_q1_pknows_old X1);  assumption.
  tauto.
Defined.

Remark rem_2955 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q1 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1. intros A1.
  case (rem_2954 epsilon_m_q1_pknows_old X1 A1). clear  epsilon_m_q1_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1. tauto.
Defined.

Remark rem_2956 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q1 (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1. intro H. intros.
  elim (rem_660 X1 H);  intros.
  apply (rem_2955 epsilon_m_q1_pknows_old X1);  tauto.
Defined.

Remark rem_2957 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2958 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_663 H);  intros.
  apply (rem_2957 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2959 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old i. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_i_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2960 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 i -> auto_knows_old i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_666 H);  intros.
  apply (rem_2959 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2961 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_bob_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2962 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 bob -> auto_knows_old bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_669 H);  intros.
  apply (rem_2961 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2963 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_prv_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_2964 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 prv -> auto_knows_old prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_672 H);  intros.
  apply (rem_2963 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_2965 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q3 X1 -> auto__q3 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2966 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2967 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X2:term, auto__q4 X2 -> auto__q4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2968 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2969 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_2966 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_2968 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2970 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2969 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2971 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q4 X1 -> auto__q4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2972 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2973 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X2:term, auto__q2 X2 -> auto__q2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2974 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2975 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_2972 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2974 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2976 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2975 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2977 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2978 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2979 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2977 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_2978 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2980 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2979 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2981 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2982 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2983 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X2:term, auto__q3 X2 -> auto__q3 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_2984 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2985 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_2982 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2984 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2986 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2985 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2987 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2988 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2989 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_2987 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2988 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2990 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2989 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2991 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2992 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2993 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2991 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_2992 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2994 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2993 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2995 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_2996 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_2997 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_2995 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_2996 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_2998 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2997 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_2999 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3000 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3001 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_2999 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3000 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3002 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3001 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3003 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3004 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3005 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_3003 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3004 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3006 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3005 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_9;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3007 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

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

Remark rem_3009 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3010 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_3007 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3009 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3011 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3010 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3012 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3013 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3014 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_3012 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3013 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3015 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3014 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_key_11;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3016 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_725 X1 X2 H);  intros.
  apply (rem_2970 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2976 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2980 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2986 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2990 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2994 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_2998 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3002 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3006 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3011 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3015 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3017 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3018 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

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

Remark rem_3020 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3021 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3017 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3018 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3020 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3022 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3021 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3023 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3024 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

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

Remark rem_3026 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3027 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3023 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3024 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3026 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3028 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3027 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3029 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3030 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

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

Remark rem_3032 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3033 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3029 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3030 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3032 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3034 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3033 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3035 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3036 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

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

Remark rem_3038 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3039 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3035 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3036 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3038 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3040 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3039 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3041 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3042 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3043 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3044 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3041 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3042 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3043 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3045 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3044 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3046 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3047 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3048 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3049 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3046 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3047 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3048 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3050 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3049 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3051 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3052 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3053 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3054 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3051 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3052 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3053 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3055 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3054 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3056 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3057 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3058 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3059 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3056 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3057 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3058 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3060 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3059 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3061 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3062 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3063 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3064 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3061 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3062 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3063 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3065 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3064 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_9;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3066 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3067 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3068 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3069 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3066 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3067 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3068 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3070 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3069 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3071 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 (session_current X1 X2 X3) -> auto_knows_old (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_781 X1 X2 X3 H);  intros.
  apply (rem_3022 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3028 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3034 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3040 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3045 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3050 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3055 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3060 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3065 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3070 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_3072 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2979 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3073 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2993 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3074 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3075 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3076 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_3074 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3075 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3077 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3076 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3078 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3010 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3079 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_790 X1 X2 H);  intros.
  apply (rem_3072 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3073 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3077 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3078 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3080 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_pub_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_3081 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 pub -> auto_knows_old pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_793 H);  intros.
  apply (rem_3080 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_3082 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3010 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3083 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_796 X1 X2 H);  intros.
  apply (rem_3082 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3084 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3085 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3086 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3087 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3084 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3085 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3086 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3088 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3087 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3089 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3090 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3091 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3092 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3089 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3090 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3091 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3093 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3092 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3094 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3021 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3095 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3096 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3097 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3098 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3095 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3096 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3097 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3099 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3098 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3100 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3101 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3102 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3103 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3100 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3101 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3102 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3104 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3103 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3105 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3106 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3107 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3108 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3105 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3106 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3107 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3109 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3108 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3110 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3111 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3112 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3113 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3110 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3111 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3112 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3114 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3113 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3115 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3116 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3117 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3118 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3115 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3116 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3117 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3119 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3118 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3120 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3121 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3122 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3123 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3120 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3121 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3122 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3124 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3123 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_9;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3125 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3126 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3127 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3128 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3125 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3126 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3127 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3129 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3128 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3130 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3027 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_11;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3131 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3132 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3133 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3134 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3131 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3132 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3133 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3135 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3134 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_12;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3136 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3033 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_13;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3137 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3138 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3139 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3140 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3137 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3138 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3139 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3141 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3140 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_14;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3142 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3143 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3144 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3145 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3142 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3143 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3144 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3146 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3145 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_15;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3147 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3039 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_16;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3148 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3044 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_17;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3149 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3150 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3151 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3152 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3149 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3150 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3151 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3153 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3152 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_18;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3154 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3049 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_19;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3155 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3156 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3157 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3158 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3155 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3156 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3157 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3159 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3158 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_20;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3160 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3161 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3162 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3163 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3160 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3161 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3162 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3164 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3163 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_21;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3165 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3054 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_22;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3166 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3167 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3168 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3169 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3166 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3167 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3168 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3170 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3169 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_23;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3171 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3172 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3173 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3174 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3171 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3172 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3173 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3175 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3174 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_24;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3176 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3177 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3178 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3179 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3176 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3177 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3178 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3180 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3179 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_25;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3181 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3182 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3183 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3184 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3181 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3182 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3183 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3185 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3184 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_26;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3186 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3187 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3188 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3189 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3186 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3187 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3188 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3190 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3189 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_27;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3191 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3192 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3193 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3194 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3191 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3192 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3193 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3195 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3194 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_28;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3196 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3197 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3198 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3199 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3196 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3197 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3198 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3200 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3199 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_29;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3201 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3202 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3203 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3204 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3201 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3202 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3203 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3205 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3204 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_30;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3206 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3207 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3208 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3209 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3206 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3207 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3208 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3210 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3209 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_31;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3211 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3064 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_32;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3212 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3069 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_33;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3213 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3214 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3215 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3216 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3213 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3214 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3215 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3217 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3216 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_34;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3218 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3219 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3220 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3221 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3218 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3219 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3220 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3222 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3221 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_35;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3223 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3224 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3225 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3226 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3223 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3224 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3225 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3227 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3226 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_36;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3228 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 (nonceb_current X1 X2 X3) -> auto_knows_old (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_942 X1 X2 X3 H);  intros.
  apply (rem_3088 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3093 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3094 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3099 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3104 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3109 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3114 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3119 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3124 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3129 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3130 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3135 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3136 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3141 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3146 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3147 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3148 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3153 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3154 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3159 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3164 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3165 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3170 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3175 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3180 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3185 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3190 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3195 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3200 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3205 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3210 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3211 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3212 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3217 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3222 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3227 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_3229 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto_knows_old alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old.  case (rem_2950 epsilon_m_q1_pknows_old). clear  epsilon_m_q1_pknows_old. intros. apply trans_knows_old_alice_1;  tauto.
 clear  epsilon_m_q1_pknows_old. tauto.
Defined.

Remark rem_3230 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> auto__q1 alice -> auto_knows_old alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intro H. intros.
  elim (rem_945 H);  intros.
  apply (rem_3229 epsilon_m_q1_pknows_old);  tauto.
Defined.

Remark rem_3231 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3087 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3232 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3233 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3234 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3235 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3232 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3233 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3234 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3236 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3235 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3237 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3021 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3238 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3239 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3240 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3241 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3238 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3239 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3240 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3242 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3241 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3243 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3098 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3244 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3108 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3245 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3113 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3246 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3118 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3247 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3123 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_9;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3248 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3249 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3250 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3251 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3248 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3249 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3250 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3252 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3251 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_10;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3253 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3254 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3255 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_3019 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3256 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3253 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3254 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_3255 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3257 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3256 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_11;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3258 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3128 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_12;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3259 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3260 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3261 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3262 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3259 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3260 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3261 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3263 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3262 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_13;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3264 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3265 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3266 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3267 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3264 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3265 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3266 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3268 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3267 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_14;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3269 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3270 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3271 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3272 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3269 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3270 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3271 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3273 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3272 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_15;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3274 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3134 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_16;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3275 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3033 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_17;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3276 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3145 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_18;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3277 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3044 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_19;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3278 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3152 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_20;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3279 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_2953 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3280 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3281 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3282 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_3279 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3280 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3281 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3283 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3282 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_21;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3284 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3049 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_22;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3285 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3286 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3287 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3288 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3285 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3286 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3287 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3289 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3288 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_23;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3290 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3291 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3292 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_3025 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3293 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_3290 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3291 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_3292 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3294 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3293 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_24;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3295 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3158 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_25;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3296 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3297 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3298 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3299 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3296 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3297 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3298 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3300 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3299 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_26;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3301 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3163 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_27;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3302 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3303 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_2983 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3304 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3305 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3302 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3303 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3304 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3306 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3305 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_28;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3307 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3059 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_29;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3308 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3169 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_30;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3309 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3174 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_31;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3310 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3311 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_2973 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3312 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3313 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3310 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3311 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3312 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3314 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3313 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_32;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3315 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3316 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_2967 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3317 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_3037 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3318 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_3315 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3316 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_3317 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3319 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3318 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_33;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3320 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3184 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_34;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3321 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3189 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_35;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3322 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3194 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_36;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3323 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3199 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_37;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3324 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3204 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_38;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3325 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3209 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_39;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3326 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3064 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_40;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3327 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3069 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_41;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3328 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3216 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_42;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3329 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3330 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3331 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_3031 epsilon_m_q1_pknows_old X3).
Defined.

Remark rem_3332 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_3329 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3330 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_3331 epsilon_m_q1_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_3333 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3332 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_43;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3334 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3221 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_44;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3335 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3226 epsilon_m_q1_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_m_q1_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_45;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_3336 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_1052 X1 X2 X3 H);  intros.
  apply (rem_3231 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3236 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3237 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3242 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3243 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3244 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3245 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3246 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3247 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3252 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3257 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3258 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3263 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3268 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3273 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3274 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3275 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3276 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3277 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3278 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3283 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3284 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3289 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3294 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3295 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3300 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3301 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3306 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3307 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3308 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3309 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3314 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3319 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3320 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3321 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3322 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3323 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3324 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3325 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3326 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3327 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3328 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3333 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3334 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
  apply (rem_3335 epsilon_m_q1_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_3337 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2975 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3338 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_2985 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_2;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3339 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_2965 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3340 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3341 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_3339 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3340 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3342 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3341 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_3;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3343 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_2981 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3344 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3345 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_3343 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3344 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3346 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3345 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_4;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3347 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3076 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_5;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3348 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_2971 epsilon_m_q1_pknows_old X1).
Defined.

Remark rem_3349 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_3008 epsilon_m_q1_pknows_old X2).
Defined.

Remark rem_3350 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_3348 epsilon_m_q1_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3349 epsilon_m_q1_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_3351 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3350 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_6;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3352 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3010 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_7;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3353 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_3014 epsilon_m_q1_pknows_old X1 X2 A1 A2). clear  epsilon_m_q1_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_8;  tauto.
 clear  epsilon_m_q1_pknows_old A1 A2. tauto.
Defined.

Remark rem_3354 : (forall X:term, auto__q1 X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 (noncea_old X1 X2) -> auto_knows_old (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_m_q1_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_1071 X1 X2 H);  intros.
  apply (rem_3337 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3338 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3342 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3346 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3347 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3351 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3352 epsilon_m_q1_pknows_old X1 X2);  tauto.
  apply (rem_3353 epsilon_m_q1_pknows_old X1 X2);  tauto.
Defined.

Remark rem_3355 : forall X1:term, auto__q1 X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_m_q1_pknows_old 1.
  intro X. case X.
  exact (rem_3230 epsilon_m_q1_pknows_old ).
  exact (rem_2962 epsilon_m_q1_pknows_old ).
  intros X1 X2;  exact (rem_3083 epsilon_m_q1_pknows_old X1 X2).
  intros X1 X2;  exact (rem_3079 epsilon_m_q1_pknows_old X1 X2).
  exact (rem_2960 epsilon_m_q1_pknows_old ).
  intros X1 X2;  exact (rem_3016 epsilon_m_q1_pknows_old X1 X2).
  exact (rem_2958 epsilon_m_q1_pknows_old ).
  intros X1 X2. intro H. elim (rem_1073 X1 X2 H).
  intros X1 X2;  exact (rem_3354 epsilon_m_q1_pknows_old X1 X2).
  intros X1 X2 X3;  exact (rem_3228 epsilon_m_q1_pknows_old X1 X2 X3).
  intros X1 X2 X3;  exact (rem_3336 epsilon_m_q1_pknows_old X1 X2 X3).
  exact (rem_2964 epsilon_m_q1_pknows_old ).
  exact (rem_3081 epsilon_m_q1_pknows_old ).
  intros X1;  exact (rem_2956 epsilon_m_q1_pknows_old X1).
  exact (rem_2952 epsilon_m_q1_pknows_old ).
  intros X1 X2 X3;  exact (rem_3071 epsilon_m_q1_pknows_old X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_1075 X1 X2 X3 H).
   intro H. elim (rem_1074  H).
Qed.

Remark rem_3356 : forall X1 X2:term, auto__q1 X1 -> auto__q4 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_3357 : forall X1 X2:term, auto__q1 X1 -> auto__q2 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_3358 : auto__q3 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2920 H);  intros.
Qed.

Remark rem_3359 : forall X1:term, auto__q1 X1 -> auto__q3 pub -> auto_knows_old (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 pub -> False). tauto.
  exact (rem_3358).
Qed.

Remark rem_3360 : forall X1:term, auto__q3 pub -> auto__q1 X1 -> auto_knows_old (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 pub -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_3359 X1).
Qed.

Remark rem_3361 : auto__q4 pub -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2383 H);  intros.
Qed.

Remark rem_3362 : forall X1:term, auto__q1 X1 -> auto__q4 pub -> auto_knows_old (key prv X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 pub -> False). tauto.
  exact (rem_3361).
Qed.

Remark rem_3363 : forall X1:term, auto__q4 pub -> auto__q1 X1 -> auto_knows_old (key prv X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q4 pub -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_3362 X1).
Qed.

Remark rem_3364 : forall X1:term, auto__q2 (key pub X1) -> auto_knows_old (key prv X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_455 pub X1 H);  intros.
  apply (rem_3360 X1);  tauto.
  apply (rem_3363 X1);  tauto.
Qed.

Remark rem_3365 : forall X2:term, auto__q2 (key pub X2) -> auto_knows_old (key prv X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 (key pub X1) -> auto_knows_old (key prv X1) -> False). tauto. exact (rem_3364 X1).
Qed.

Remark rem_3366 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 (key pub X2) -> auto_knows_old (key prv X2) -> False). tauto.
  exact (rem_3365 X2).
Qed.

Remark rem_3367 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key pub X2) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_3368 : forall X1 X2:term, auto_knows_old (crypt X1 (key pub X2)) -> auto_knows_old (key prv X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1504 X1 (key pub X2) H);  intros.
  apply (rem_3356 X1 X2);  tauto.
  apply (rem_3357 X1 X2);  tauto.
  apply (rem_3366 X1 X2);  tauto.
  apply (rem_3367 X1 X2);  tauto.
Qed.

Remark rem_3369 : 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. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_old (crypt X1 (key pub X2)) -> auto_knows_old (key prv X2) -> auto_knows_old X1). tauto. exact (rem_3368 X1 X2).
Qed.

Remark rem_3370 : forall X1:term, auto_knows_current (s X1) -> auto_knows_current X1. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1593 X1 H);  intros.
  apply (rem_650 X1);  tauto.
  apply (rem_1076 X1);  tauto.
Qed.

Remark rem_3371 : forall _big_m:term, auto_knows_current (s _big_m) -> auto_knows_current _big_m. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_current (s X1) -> auto_knows_current X1). tauto. exact (rem_3370 X1).
Qed.

Remark rem_3372 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3373 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3374 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3372 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3373 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3375 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3374 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3376 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3375 X1 X2 X3).
Qed.

Remark rem_3377 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3378 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3379 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3377 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3378 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3380 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3379 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3381 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3380 X1 X2 X3).
Qed.

Remark rem_3382 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3383 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3384 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3382 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3383 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3385 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3384 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3386 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3385 X1 X2 X3).
Qed.

Remark rem_3387 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3388 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3389 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3387 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3388 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3390 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3389 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3391 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3390 X1 X2 X3).
Qed.

Remark rem_3392 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3393 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3394 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3392 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3393 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3395 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3394 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3396 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3395 X1 X2 X3).
Qed.

Remark rem_3397 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3398 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3399 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3397 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3398 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3400 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3399 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3401 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3400 X1 X2 X3).
Qed.

Remark rem_3402 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3403 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3404 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3402 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3403 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3405 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3404 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3406 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3405 X1 X2 X3).
Qed.

Remark rem_3407 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1109 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1110 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3408 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3407 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3409 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3408 X1 X2 X3).
Qed.

Remark rem_3410 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3411 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3412 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3410 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3411 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3413 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3412 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3414 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3413 X1 X2 X3).
Qed.

Remark rem_3415 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3416 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3417 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3415 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3416 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3418 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3417 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3419 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3418 X1 X2 X3).
Qed.

Remark rem_3420 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3421 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3422 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3420 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3421 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3423 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3422 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3424 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3423 X1 X2 X3).
Qed.

Remark rem_3425 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3426 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3427 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3425 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3426 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3428 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3427 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3429 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3428 X1 X2 X3).
Qed.

Remark rem_3430 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3431 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3432 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3430 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3431 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3433 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3432 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3434 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3433 X1 X2 X3).
Qed.

Remark rem_3435 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3436 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3437 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3435 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3436 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3438 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3437 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3439 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3438 X1 X2 X3).
Qed.

Remark rem_3440 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3441 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3442 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3440 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3441 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3443 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3442 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3444 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3443 X1 X2 X3).
Qed.

Remark rem_3445 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1384 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1385 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3446 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3445 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3447 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3446 X1 X2 X3).
Qed.

Remark rem_3448 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3449 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3450 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3448 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3449 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3451 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3450 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3452 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3451 X1 X2 X3).
Qed.

Remark rem_3453 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3454 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3455 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3453 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3454 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3456 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3455 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3457 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3456 X1 X2 X3).
Qed.

Remark rem_3458 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2375 X2 X3 X1 H);  intros.
  apply (rem_3376 X1 X2 X3);  tauto.
  apply (rem_3381 X1 X2 X3);  tauto.
  apply (rem_3386 X1 X2 X3);  tauto.
  apply (rem_3391 X1 X2 X3);  tauto.
  apply (rem_3396 X1 X2 X3);  tauto.
  apply (rem_3401 X1 X2 X3);  tauto.
  apply (rem_3406 X1 X2 X3);  tauto.
  apply (rem_3409 X1 X2 X3);  tauto.
  apply (rem_3414 X1 X2 X3);  tauto.
  apply (rem_3419 X1 X2 X3);  tauto.
  apply (rem_3424 X1 X2 X3);  tauto.
  apply (rem_3429 X1 X2 X3);  tauto.
  apply (rem_3434 X1 X2 X3);  tauto.
  apply (rem_3439 X1 X2 X3);  tauto.
  apply (rem_3444 X1 X2 X3);  tauto.
  apply (rem_3447 X1 X2 X3);  tauto.
  apply (rem_3452 X1 X2 X3);  tauto.
  apply (rem_3457 X1 X2 X3);  tauto.
Qed.

Remark rem_3459 : forall X1 X2 X3:term, auto__q4 (nonceb_current X2 X3 X1) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3458 X1 X2 X3).
Qed.

Remark rem_3460 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3461 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3462 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3460 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3461 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3463 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3462 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3464 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3463 X1 X2 X3).
Qed.

Remark rem_3465 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1377 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1378 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3466 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3465 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3467 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3466 X1 X2 X3).
Qed.

Remark rem_3468 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1095 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1096 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3469 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3468 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3470 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3469 X1 X2 X3).
Qed.

Remark rem_3471 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3472 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3473 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3471 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3472 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3474 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3473 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3475 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3474 X1 X2 X3).
Qed.

Remark rem_3476 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1087 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1089 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3477 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3476 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3478 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3477 X1 X2 X3).
Qed.

Remark rem_3479 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3480 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3481 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3479 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3480 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3482 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3481 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3483 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3482 X1 X2 X3).
Qed.

Remark rem_3484 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2843 X2 X3 X1 H);  intros.
  apply (rem_3464 X1 X2 X3);  tauto.
  apply (rem_3467 X1 X2 X3);  tauto.
  apply (rem_3470 X1 X2 X3);  tauto.
  apply (rem_3475 X1 X2 X3);  tauto.
  apply (rem_3478 X1 X2 X3);  tauto.
  apply (rem_3483 X1 X2 X3);  tauto.
Qed.

Remark rem_3485 : forall X1 X2 X3:term, auto__q3 (nonceb_current X2 X3 X1) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3484 X1 X2 X3).
Qed.

Remark rem_3486 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1600 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3459 X1 X2 X3);  tauto.
  apply (rem_3485 X1 X2 X3);  tauto.
Qed.

Remark rem_3487 : forall X1 X2 X3:term, auto__q4 (s (nonceb_current X2 X3 X1)) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_3486 X1 X2 X3).
Qed.

Remark rem_3488 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1220 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1221 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3489 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3488 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3490 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3489 X1 X2 X3).
Qed.

Remark rem_3491 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1230 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1231 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3492 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3491 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3493 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3492 X1 X2 X3).
Qed.

Remark rem_3494 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3495 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3496 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3494 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3495 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3497 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3496 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3498 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1215 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1216 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3499 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3498 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3500 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3499 X1 X2 X3).
Qed.

Remark rem_3501 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3502 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3503 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3501 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3502 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3504 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3503 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3505 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1121 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1122 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3506 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3505 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3507 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3506 X1 X2 X3).
Qed.

Remark rem_3508 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3509 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3510 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3508 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3509 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3511 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3510 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3512 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3511 X1 X2 X3).
Qed.

Remark rem_3513 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3514 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3515 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3513 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3514 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3516 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3515 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3517 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3516 X1 X2 X3).
Qed.

Remark rem_3518 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3519 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3520 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3518 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3519 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3521 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3520 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3522 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3521 X1 X2 X3).
Qed.

Remark rem_3523 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1115 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1117 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3524 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3523 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3525 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3524 X1 X2 X3).
Qed.

Remark rem_3526 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3418 X1 X2 X3).
Qed.

Remark rem_3527 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3528 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3529 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3527 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3528 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3530 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3529 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3531 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3530 X1 X2 X3).
Qed.

Remark rem_3532 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3533 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3534 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3532 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3533 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3535 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3534 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3536 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3537 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3538 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3536 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3537 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3539 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3538 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3540 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3539 X1 X2 X3).
Qed.

Remark rem_3541 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1127 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1128 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3542 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3541 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3543 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3542 X1 X2 X3).
Qed.

Remark rem_3544 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3545 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3546 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3544 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3545 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3547 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3546 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3548 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3547 X1 X2 X3).
Qed.

Remark rem_3549 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3550 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3551 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3549 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3550 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3552 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3551 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3553 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3554 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3555 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3553 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3554 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3556 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3555 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3557 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3556 X1 X2 X3).
Qed.

Remark rem_3558 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3559 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3560 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3558 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3559 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3561 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3560 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3562 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3561 X1 X2 X3).
Qed.

Remark rem_3563 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3564 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3565 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3563 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3564 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3566 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3565 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3567 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3566 X1 X2 X3).
Qed.

Remark rem_3568 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3569 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3570 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3568 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3569 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3571 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3570 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3572 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3571 X1 X2 X3).
Qed.

Remark rem_3573 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3574 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3575 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3573 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3574 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3576 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3575 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3577 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3576 X1 X2 X3).
Qed.

Remark rem_3578 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1133 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1134 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3579 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3578 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3580 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3579 X1 X2 X3).
Qed.

Remark rem_3581 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1403 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1404 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3582 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3581 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3583 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3582 X1 X2 X3).
Qed.

Remark rem_3584 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3585 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3586 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3584 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3585 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3587 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3586 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3588 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3589 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3590 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3588 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3589 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3591 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3590 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3592 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3591 X1 X2 X3).
Qed.

Remark rem_3593 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1312 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1313 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3594 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3593 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3595 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3594 X1 X2 X3).
Qed.

Remark rem_3596 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1409 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1410 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3597 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3596 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3598 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3597 X1 X2 X3).
Qed.

Remark rem_3599 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3600 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3601 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3599 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3600 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3602 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3601 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3603 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3602 X1 X2 X3).
Qed.

Remark rem_3604 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1421 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1422 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3605 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3604 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3606 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3605 X1 X2 X3).
Qed.

Remark rem_3607 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3608 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3609 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3607 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3608 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3610 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3609 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3611 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3610 X1 X2 X3).
Qed.

Remark rem_3612 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3613 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3614 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3612 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3613 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3615 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3614 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3616 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3615 X1 X2 X3).
Qed.

Remark rem_3617 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3618 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3619 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3617 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3618 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3620 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3619 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3621 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1415 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1416 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3622 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3621 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3623 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3622 X1 X2 X3).
Qed.

Remark rem_3624 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1225 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1226 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3625 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3624 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3626 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3625 X1 X2 X3).
Qed.

Remark rem_3627 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1318 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1319 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3628 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3627 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3629 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3628 X1 X2 X3).
Qed.

Remark rem_3630 : forall X1 X2 X3:term, auto__q1 (nonceb_current X2 X3 X1) -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_942 X2 X3 X1 H);  intros.
  apply (rem_3490 X1 X2 X3);  tauto.
  apply (rem_3493 X1 X2 X3);  tauto.
  apply (rem_3497 X1 X2 X3);  tauto.
  apply (rem_3500 X1 X2 X3);  tauto.
  apply (rem_3504 X1 X2 X3);  tauto.
  apply (rem_3507 X1 X2 X3);  tauto.
  apply (rem_3512 X1 X2 X3);  tauto.
  apply (rem_3517 X1 X2 X3);  tauto.
  apply (rem_3522 X1 X2 X3);  tauto.
  apply (rem_3525 X1 X2 X3);  tauto.
  apply (rem_3526 X1 X2 X3);  tauto.
  apply (rem_3531 X1 X2 X3);  tauto.
  apply (rem_3535 X1 X2 X3);  tauto.
  apply (rem_3540 X1 X2 X3);  tauto.
  apply (rem_3543 X1 X2 X3);  tauto.
  apply (rem_3548 X1 X2 X3);  tauto.
  apply (rem_3552 X1 X2 X3);  tauto.
  apply (rem_3557 X1 X2 X3);  tauto.
  apply (rem_3562 X1 X2 X3);  tauto.
  apply (rem_3567 X1 X2 X3);  tauto.
  apply (rem_3572 X1 X2 X3);  tauto.
  apply (rem_3577 X1 X2 X3);  tauto.
  apply (rem_3580 X1 X2 X3);  tauto.
  apply (rem_3583 X1 X2 X3);  tauto.
  apply (rem_3587 X1 X2 X3);  tauto.
  apply (rem_3592 X1 X2 X3);  tauto.
  apply (rem_3595 X1 X2 X3);  tauto.
  apply (rem_3598 X1 X2 X3);  tauto.
  apply (rem_3603 X1 X2 X3);  tauto.
  apply (rem_3606 X1 X2 X3);  tauto.
  apply (rem_3611 X1 X2 X3);  tauto.
  apply (rem_3616 X1 X2 X3);  tauto.
  apply (rem_3620 X1 X2 X3);  tauto.
  apply (rem_3623 X1 X2 X3);  tauto.
  apply (rem_3626 X1 X2 X3);  tauto.
  apply (rem_3629 X1 X2 X3);  tauto.
Qed.

Remark rem_3631 : forall X1 X2 X3:term, auto__q1 (s (nonceb_current X2 X3 X1)) -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_660 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3630 X1 X2 X3);  tauto.
Qed.

Remark rem_3632 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1453 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1454 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3633 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3632 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3634 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3633 X1 X2 X3).
Qed.

Remark rem_3635 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3636 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3637 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3635 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3636 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3638 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3637 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3639 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3638 X1 X2 X3).
Qed.

Remark rem_3640 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3641 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3642 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3640 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3641 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3643 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3642 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3644 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3643 X1 X2 X3).
Qed.

Remark rem_3645 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3646 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3647 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3645 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3646 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3648 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3647 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3649 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3648 X1 X2 X3).
Qed.

Remark rem_3650 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_524 X2 X3 X1 H);  intros.
  apply (rem_3634 X1 X2 X3);  tauto.
  apply (rem_3639 X1 X2 X3);  tauto.
  apply (rem_3644 X1 X2 X3);  tauto.
  apply (rem_3649 X1 X2 X3);  tauto.
Qed.

Remark rem_3651 : forall X1 X2 X3:term, auto__q2 (nonceb_current X2 X3 X1) -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3650 X1 X2 X3).
Qed.

Remark rem_3652 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_442 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3651 X1 X2 X3);  tauto.
Qed.

Remark rem_3653 : forall X1 X2 X3:term, auto__q2 (s (nonceb_current X2 X3 X1)) -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_3652 X1 X2 X3).
Qed.

Remark rem_3654 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3561 X1 X2 X3).
Qed.

Remark rem_3655 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3576 X1 X2 X3).
Qed.

Remark rem_3656 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3657 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3658 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3656 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3657 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3659 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3658 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3660 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3659 X1 X2 X3).
Qed.

Remark rem_3661 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3547 X1 X2 X3).
Qed.

Remark rem_3662 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1102 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1103 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3663 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3662 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3664 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3663 X1 X2 X3).
Qed.

Remark rem_3665 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3666 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3667 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3665 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3666 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3668 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3667 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3669 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3668 X1 X2 X3).
Qed.

Remark rem_3670 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3671 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3672 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3670 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3671 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3673 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3672 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3674 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3673 X1 X2 X3).
Qed.

Remark rem_3675 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3643 X1 X2 X3).
Qed.

Remark rem_3676 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1396 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1397 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3677 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3676 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3678 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3677 X1 X2 X3).
Qed.

Remark rem_3679 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3680 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3681 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3679 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3680 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3682 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3681 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3683 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3682 X1 X2 X3).
Qed.

Remark rem_3684 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1301 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1302 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3685 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3684 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3686 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3685 X1 X2 X3).
Qed.

Remark rem_3687 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3688 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3689 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3687 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3688 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3690 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3689 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3691 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3690 X1 X2 X3).
Qed.

Remark rem_3692 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3693 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3694 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3692 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3693 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3695 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3694 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3696 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3695 X1 X2 X3).
Qed.

Remark rem_3697 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1390 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1391 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3698 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3697 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3699 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3698 X1 X2 X3).
Qed.

Remark rem_3700 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3504 X1 X2 X3).
Qed.

Remark rem_3701 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1191 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1192 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3702 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3701 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3703 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3702 X1 X2 X3).
Qed.

Remark rem_3704 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1289 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1290 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3705 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3704 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3706 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3705 X1 X2 X3).
Qed.

Remark rem_3707 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3708 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3709 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3707 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3708 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3710 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3709 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3711 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3710 X1 X2 X3).
Qed.

Remark rem_3712 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1197 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1198 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3713 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3712 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3714 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3713 X1 X2 X3).
Qed.

Remark rem_3715 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3716 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3717 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3715 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3716 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3718 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3717 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3719 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3718 X1 X2 X3).
Qed.

Remark rem_3720 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3721 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3722 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3720 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3721 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3723 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3722 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3724 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3723 X1 X2 X3).
Qed.

Remark rem_3725 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1209 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1210 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3726 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3725 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3727 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3726 X1 X2 X3).
Qed.

Remark rem_3728 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3729 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3730 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3728 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3729 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3731 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3730 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3732 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3731 X1 X2 X3).
Qed.

Remark rem_3733 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3734 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3735 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3733 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3734 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3736 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3735 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3737 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3736 X1 X2 X3).
Qed.

Remark rem_3738 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3739 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3740 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3738 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3739 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3741 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3740 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3742 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3741 X1 X2 X3).
Qed.

Remark rem_3743 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3744 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3745 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3743 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3744 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3746 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3745 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3747 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3746 X1 X2 X3).
Qed.

Remark rem_3748 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3552 X1 X2 X3).
Qed.

Remark rem_3749 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3750 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3751 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3749 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3750 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3752 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3751 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3753 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3752 X1 X2 X3).
Qed.

Remark rem_3754 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3755 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3756 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3754 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3755 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3757 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3756 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3758 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3757 X1 X2 X3).
Qed.

Remark rem_3759 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3521 X1 X2 X3).
Qed.

Remark rem_3760 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3648 X1 X2 X3).
Qed.

Remark rem_3761 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1203 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1204 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3762 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3761 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3763 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3762 X1 X2 X3).
Qed.

Remark rem_3764 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3765 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3766 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3764 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3765 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3767 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3766 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3768 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3767 X1 X2 X3).
Qed.

Remark rem_3769 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3539 X1 X2 X3).
Qed.

Remark rem_3770 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3615 X1 X2 X3).
Qed.

Remark rem_3771 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3772 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3773 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3771 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3772 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3774 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3773 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3775 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3774 X1 X2 X3).
Qed.

Remark rem_3776 : forall X1 X2 X3:term, auto__q1 (nonceb_current X2 X3 X1) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_942 X2 X3 X1 H);  intros.
  apply (rem_3654 X1 X2 X3);  tauto.
  apply (rem_3655 X1 X2 X3);  tauto.
  apply (rem_3660 X1 X2 X3);  tauto.
  apply (rem_3661 X1 X2 X3);  tauto.
  apply (rem_3664 X1 X2 X3);  tauto.
  apply (rem_3669 X1 X2 X3);  tauto.
  apply (rem_3674 X1 X2 X3);  tauto.
  apply (rem_3675 X1 X2 X3);  tauto.
  apply (rem_3678 X1 X2 X3);  tauto.
  apply (rem_3683 X1 X2 X3);  tauto.
  apply (rem_3686 X1 X2 X3);  tauto.
  apply (rem_3691 X1 X2 X3);  tauto.
  apply (rem_3696 X1 X2 X3);  tauto.
  apply (rem_3699 X1 X2 X3);  tauto.
  apply (rem_3700 X1 X2 X3);  tauto.
  apply (rem_3703 X1 X2 X3);  tauto.
  apply (rem_3706 X1 X2 X3);  tauto.
  apply (rem_3711 X1 X2 X3);  tauto.
  apply (rem_3714 X1 X2 X3);  tauto.
  apply (rem_3719 X1 X2 X3);  tauto.
  apply (rem_3724 X1 X2 X3);  tauto.
  apply (rem_3727 X1 X2 X3);  tauto.
  apply (rem_3732 X1 X2 X3);  tauto.
  apply (rem_3737 X1 X2 X3);  tauto.
  apply (rem_3742 X1 X2 X3);  tauto.
  apply (rem_3747 X1 X2 X3);  tauto.
  apply (rem_3748 X1 X2 X3);  tauto.
  apply (rem_3753 X1 X2 X3);  tauto.
  apply (rem_3758 X1 X2 X3);  tauto.
  apply (rem_3759 X1 X2 X3);  tauto.
  apply (rem_3760 X1 X2 X3);  tauto.
  apply (rem_3763 X1 X2 X3);  tauto.
  apply (rem_3768 X1 X2 X3);  tauto.
  apply (rem_3769 X1 X2 X3);  tauto.
  apply (rem_3770 X1 X2 X3);  tauto.
  apply (rem_3775 X1 X2 X3);  tauto.
Qed.

Remark rem_3777 : forall X1 X2 X3:term, auto__q1 (s (nonceb_current X2 X3 X1)) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_660 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3776 X1 X2 X3);  tauto.
Qed.

Remark rem_3778 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3779 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3780 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3778 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3779 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3781 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3780 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_11;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3782 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3781 X1 X2 X3).
Qed.

Remark rem_3783 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1440 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1441 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3784 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3783 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3785 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3784 X1 X2 X3).
Qed.

Remark rem_3786 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1330 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1331 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3787 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3786 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3788 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3787 X1 X2 X3).
Qed.

Remark rem_3789 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1146 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1147 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3790 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3789 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3791 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3790 X1 X2 X3).
Qed.

Remark rem_3792 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1152 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1153 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3793 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3792 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3794 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3793 X1 X2 X3).
Qed.

Remark rem_3795 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1158 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1159 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3796 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3795 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3797 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3796 X1 X2 X3).
Qed.

Remark rem_3798 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3799 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3800 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3798 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3799 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3801 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3800 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3802 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3801 X1 X2 X3).
Qed.

Remark rem_3803 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3400 X1 X2 X3).
Qed.

Remark rem_3804 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1241 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1242 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3805 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3804 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3806 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3805 X1 X2 X3).
Qed.

Remark rem_3807 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3808 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3809 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3807 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3808 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3810 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3809 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3811 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3810 X1 X2 X3).
Qed.

Remark rem_3812 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1335 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1336 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3813 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3812 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3814 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3813 X1 X2 X3).
Qed.

Remark rem_3815 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1446 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1447 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3816 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3815 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3817 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3816 X1 X2 X3).
Qed.

Remark rem_3818 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1140 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1142 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3819 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3818 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3820 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3819 X1 X2 X3).
Qed.

Remark rem_3821 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1434 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1435 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3822 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3821 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3823 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3822 X1 X2 X3).
Qed.

Remark rem_3824 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1236 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1237 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3825 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3824 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3826 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3825 X1 X2 X3).
Qed.

Remark rem_3827 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3438 X1 X2 X3).
Qed.

Remark rem_3828 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1346 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1347 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3829 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3828 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3830 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3829 X1 X2 X3).
Qed.

Remark rem_3831 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1428 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1429 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3832 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3831 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3833 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3832 X1 X2 X3).
Qed.

Remark rem_3834 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2375 X2 X3 X1 H);  intros.
  apply (rem_3782 X1 X2 X3);  tauto.
  apply (rem_3785 X1 X2 X3);  tauto.
  apply (rem_3788 X1 X2 X3);  tauto.
  apply (rem_3791 X1 X2 X3);  tauto.
  apply (rem_3794 X1 X2 X3);  tauto.
  apply (rem_3797 X1 X2 X3);  tauto.
  apply (rem_3802 X1 X2 X3);  tauto.
  apply (rem_3803 X1 X2 X3);  tauto.
  apply (rem_3806 X1 X2 X3);  tauto.
  apply (rem_3811 X1 X2 X3);  tauto.
  apply (rem_3814 X1 X2 X3);  tauto.
  apply (rem_3817 X1 X2 X3);  tauto.
  apply (rem_3820 X1 X2 X3);  tauto.
  apply (rem_3823 X1 X2 X3);  tauto.
  apply (rem_3826 X1 X2 X3);  tauto.
  apply (rem_3827 X1 X2 X3);  tauto.
  apply (rem_3830 X1 X2 X3);  tauto.
  apply (rem_3833 X1 X2 X3);  tauto.
Qed.

Remark rem_3835 : forall X1 X2 X3:term, auto__q4 (nonceb_current X2 X3 X1) -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3834 X1 X2 X3).
Qed.

Remark rem_3836 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1252 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_1253 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3837 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3836 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3838 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3837 X1 X2 X3).
Qed.

Remark rem_3839 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3456 X1 X2 X3).
Qed.

Remark rem_3840 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3390 X1 X2 X3).
Qed.

Remark rem_3841 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3842 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3843 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3841 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3842 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3844 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3843 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3845 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3844 X1 X2 X3).
Qed.

Remark rem_3846 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3433 X1 X2 X3).
Qed.

Remark rem_3847 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3848 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3849 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3847 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3848 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3850 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3849 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3851 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3850 X1 X2 X3).
Qed.

Remark rem_3852 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2843 X2 X3 X1 H);  intros.
  apply (rem_3838 X1 X2 X3);  tauto.
  apply (rem_3839 X1 X2 X3);  tauto.
  apply (rem_3840 X1 X2 X3);  tauto.
  apply (rem_3845 X1 X2 X3);  tauto.
  apply (rem_3846 X1 X2 X3);  tauto.
  apply (rem_3851 X1 X2 X3);  tauto.
Qed.

Remark rem_3853 : forall X1 X2 X3:term, auto__q3 (nonceb_current X2 X3 X1) -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3852 X1 X2 X3).
Qed.

Remark rem_3854 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1600 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3835 X1 X2 X3);  tauto.
  apply (rem_3853 X1 X2 X3);  tauto.
Qed.

Remark rem_3855 : forall X1 X2 X3:term, auto__q4 (s (nonceb_current X2 X3 X1)) -> auto__q3 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_3854 X1 X2 X3).
Qed.

Remark rem_3856 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3857 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3858 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3856 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3857 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3859 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3858 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3860 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3861 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_3862 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3860 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_3861 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3863 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3862 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3864 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3863 X1 X2 X3).
Qed.

Remark rem_3865 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1295 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1296 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3866 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3865 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3867 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3866 X1 X2 X3).
Qed.

Remark rem_3868 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1283 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_1284 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3869 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3868 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3870 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3869 X1 X2 X3).
Qed.

Remark rem_3871 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_524 X2 X3 X1 H);  intros.
  apply (rem_3859 X1 X2 X3);  tauto.
  apply (rem_3864 X1 X2 X3);  tauto.
  apply (rem_3867 X1 X2 X3);  tauto.
  apply (rem_3870 X1 X2 X3);  tauto.
Qed.

Remark rem_3872 : forall X1 X2 X3:term, auto__q2 (nonceb_current X2 X3 X1) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3871 X1 X2 X3).
Qed.

Remark rem_3873 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_442 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3872 X1 X2 X3);  tauto.
Qed.

Remark rem_3874 : forall X1 X2 X3:term, auto__q2 (s (nonceb_current X2 X3 X1)) -> auto__q2 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_3873 X1 X2 X3).
Qed.

Remark rem_3875 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3876 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3877 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3875 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3876 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3878 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3877 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3879 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3878 X1 X2 X3).
Qed.

Remark rem_3880 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3511 X1 X2 X3).
Qed.

Remark rem_3881 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1178 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1179 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3882 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3881 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3883 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3882 X1 X2 X3).
Qed.

Remark rem_3884 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3602 X1 X2 X3).
Qed.

Remark rem_3885 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3659 X1 X2 X3).
Qed.

Remark rem_3886 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3887 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3888 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3886 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3887 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3889 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3888 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3890 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3889 X1 X2 X3).
Qed.

Remark rem_3891 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1276 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1277 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3892 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3891 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3893 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3892 X1 X2 X3).
Qed.

Remark rem_3894 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1364 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1365 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3895 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3894 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3896 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3895 X1 X2 X3).
Qed.

Remark rem_3897 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3710 X1 X2 X3).
Qed.

Remark rem_3898 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3530 X1 X2 X3).
Qed.

Remark rem_3899 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3723 X1 X2 X3).
Qed.

Remark rem_3900 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1165 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1167 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3901 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3900 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3902 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3901 X1 X2 X3).
Qed.

Remark rem_3903 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1358 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1359 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3904 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3903 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3905 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3904 X1 X2 X3).
Qed.

Remark rem_3906 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3767 X1 X2 X3).
Qed.

Remark rem_3907 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3497 X1 X2 X3).
Qed.

Remark rem_3908 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3757 X1 X2 X3).
Qed.

Remark rem_3909 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3695 X1 X2 X3).
Qed.

Remark rem_3910 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1471 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1472 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3911 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3910 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3912 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3911 X1 X2 X3).
Qed.

Remark rem_3913 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3474 X1 X2 X3).
Qed.

Remark rem_3914 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3915 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3916 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3914 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3915 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3917 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3916 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3918 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3917 X1 X2 X3).
Qed.

Remark rem_3919 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1370 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1371 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3920 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3919 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3921 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3920 X1 X2 X3).
Qed.

Remark rem_3922 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3673 X1 X2 X3).
Qed.

Remark rem_3923 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3924 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3925 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3923 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3924 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3926 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3925 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3927 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3926 X1 X2 X3).
Qed.

Remark rem_3928 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_3929 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_3930 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_3928 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_3929 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3931 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3930 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3932 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3931 X1 X2 X3).
Qed.

Remark rem_3933 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_1459 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1460 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3934 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3933 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3935 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3934 X1 X2 X3).
Qed.

Remark rem_3936 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1270 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1271 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3937 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3936 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3938 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3937 X1 X2 X3).
Qed.

Remark rem_3939 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3535 X1 X2 X3).
Qed.

Remark rem_3940 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3587 X1 X2 X3).
Qed.

Remark rem_3941 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1258 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1259 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3942 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3941 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3943 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3942 X1 X2 X3).
Qed.

Remark rem_3944 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3556 X1 X2 X3).
Qed.

Remark rem_3945 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1352 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1353 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3946 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3945 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3947 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3946 X1 X2 X3).
Qed.

Remark rem_3948 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3746 X1 X2 X3).
Qed.

Remark rem_3949 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_1465 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_1466 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3950 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3949 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3951 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_bob_key_current X1 X2). tauto. exact (rem_3950 X1 X2 X3).
Qed.

Remark rem_3952 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3620 X1 X2 X3).
Qed.

Remark rem_3953 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3591 X1 X2 X3).
Qed.

Remark rem_3954 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q3 X1 -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3516 X1 X2 X3).
Qed.

Remark rem_3955 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_942 X2 X3 X1 H);  intros.
  apply (rem_3879 X1 X2 X3);  tauto.
  apply (rem_3880 X1 X2 X3);  tauto.
  apply (rem_3883 X1 X2 X3);  tauto.
  apply (rem_3884 X1 X2 X3);  tauto.
  apply (rem_3885 X1 X2 X3);  tauto.
  apply (rem_3890 X1 X2 X3);  tauto.
  apply (rem_3893 X1 X2 X3);  tauto.
  apply (rem_3896 X1 X2 X3);  tauto.
  apply (rem_3897 X1 X2 X3);  tauto.
  apply (rem_3898 X1 X2 X3);  tauto.
  apply (rem_3899 X1 X2 X3);  tauto.
  apply (rem_3902 X1 X2 X3);  tauto.
  apply (rem_3905 X1 X2 X3);  tauto.
  apply (rem_3906 X1 X2 X3);  tauto.
  apply (rem_3907 X1 X2 X3);  tauto.
  apply (rem_3908 X1 X2 X3);  tauto.
  apply (rem_3909 X1 X2 X3);  tauto.
  apply (rem_3912 X1 X2 X3);  tauto.
  apply (rem_3913 X1 X2 X3);  tauto.
  apply (rem_3918 X1 X2 X3);  tauto.
  apply (rem_3921 X1 X2 X3);  tauto.
  apply (rem_3922 X1 X2 X3);  tauto.
  apply (rem_3927 X1 X2 X3);  tauto.
  apply (rem_3932 X1 X2 X3);  tauto.
  apply (rem_3935 X1 X2 X3);  tauto.
  apply (rem_3938 X1 X2 X3);  tauto.
  apply (rem_3939 X1 X2 X3);  tauto.
  apply (rem_3940 X1 X2 X3);  tauto.
  apply (rem_3943 X1 X2 X3);  tauto.
  apply (rem_3944 X1 X2 X3);  tauto.
  apply (rem_3947 X1 X2 X3);  tauto.
  apply (rem_3948 X1 X2 X3);  tauto.
  apply (rem_3951 X1 X2 X3);  tauto.
  apply (rem_3952 X1 X2 X3);  tauto.
  apply (rem_3953 X1 X2 X3);  tauto.
  apply (rem_3954 X1 X2 X3);  tauto.
Qed.

Remark rem_3956 : forall X1 X2 X3:term, auto__q1 (nonceb_current X2 X3 X1) -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_3955 X1 X2 X3).
Qed.

Remark rem_3957 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_660 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_3956 X1 X2 X3);  tauto.
Qed.

Remark rem_3958 : forall X1 X2 X3:term, auto__q1 (s (nonceb_current X2 X3 X1)) -> auto__q1 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_3957 X1 X2 X3).
Qed.

Remark rem_3959 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3926 X1 X2 X3).
Qed.

Remark rem_3960 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3961 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3962 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3960 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3961 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3963 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3962 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3964 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3963 X1 X2 X3).
Qed.

Remark rem_3965 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3801 X1 X2 X3).
Qed.

Remark rem_3966 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3967 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3968 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3966 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3967 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3969 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3968 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3970 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3969 X1 X2 X3).
Qed.

Remark rem_3971 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_3972 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3973 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_3971 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3972 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3974 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3973 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_1;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3975 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3974 X1 X2 X3).
Qed.

Remark rem_3976 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3977 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3978 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3976 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3977 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3979 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3978 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3980 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3979 X1 X2 X3).
Qed.

Remark rem_3981 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_1307 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1308 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3982 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3981 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3983 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3982 X1 X2 X3).
Qed.

Remark rem_3984 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3731 X1 X2 X3).
Qed.

Remark rem_3985 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3986 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3987 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3985 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3986 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3988 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3987 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3989 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3988 X1 X2 X3).
Qed.

Remark rem_3990 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_1323 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_1324 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3991 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_3990 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_3992 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3991 X1 X2 X3).
Qed.

Remark rem_3993 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_3994 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_3995 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_3993 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_3994 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_3996 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3995 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_3997 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_3998 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_3999 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_3997 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_3998 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4000 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_3999 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4001 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_4000 X1 X2 X3).
Qed.

Remark rem_4002 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4003 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_4004 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_4002 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4003 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4005 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4004 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4006 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_4005 X1 X2 X3).
Qed.

Remark rem_4007 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_4008 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_4009 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_4007 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4008 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4010 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4009 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4011 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_4010 X1 X2 X3).
Qed.

Remark rem_4012 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4013 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_4014 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_4012 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4013 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4015 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4014 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4016 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_4015 X1 X2 X3).
Qed.

Remark rem_4017 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3752 X1 X2 X3).
Qed.

Remark rem_4018 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3810 X1 X2 X3).
Qed.

Remark rem_4019 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4020 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_4021 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_4019 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4020 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4022 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4021 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4023 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_4022 X1 X2 X3).
Qed.

Remark rem_4024 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2375 X2 X3 X1 H);  intros.
  apply (rem_3959 X1 X2 X3);  tauto.
  apply (rem_3964 X1 X2 X3);  tauto.
  apply (rem_3965 X1 X2 X3);  tauto.
  apply (rem_3970 X1 X2 X3);  tauto.
  apply (rem_3975 X1 X2 X3);  tauto.
  apply (rem_3980 X1 X2 X3);  tauto.
  apply (rem_3983 X1 X2 X3);  tauto.
  apply (rem_3984 X1 X2 X3);  tauto.
  apply (rem_3989 X1 X2 X3);  tauto.
  apply (rem_3992 X1 X2 X3);  tauto.
  apply (rem_3996 X1 X2 X3);  tauto.
  apply (rem_4001 X1 X2 X3);  tauto.
  apply (rem_4006 X1 X2 X3);  tauto.
  apply (rem_4011 X1 X2 X3);  tauto.
  apply (rem_4016 X1 X2 X3);  tauto.
  apply (rem_4017 X1 X2 X3);  tauto.
  apply (rem_4018 X1 X2 X3);  tauto.
  apply (rem_4023 X1 X2 X3);  tauto.
Qed.

Remark rem_4025 : forall X1 X2 X3:term, auto__q4 (nonceb_current X2 X3 X1) -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 (nonceb_current X2 X3 X1) -> auto_bob_key_current X1 X2). tauto. exact (rem_4024 X1 X2 X3).
Qed.

Remark rem_4026 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4027 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_4028 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4026 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4027 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4029 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4028 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_bob_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4030 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_4029 X1 X2 X3).
Qed.

Remark rem_4031 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3736 X1 X2 X3).
Qed.

Remark rem_4032 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_bob_key_current X1 X2). tauto. exact (rem_3878 X1 X2 X3).
Qed.

Remark rem_4033 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X2 -> auto_bob_key_current X1 X2). tauto. exact (rem_3682 X1 X2 X3).
Qed.

Remark rem_4034 : forall X1 X2 X3:term, auto__q3 (nonceb_current X2 X3 X1) -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2843 X2 X3 X1 H);  intros.
  apply (rem_4030 X1 X2 X3);  tauto.
  apply (rem_4031 X1 X2 X3);  tauto.
  apply (rem_3668 X1 X2 X3);  tauto.
  apply (rem_4032 X1 X2 X3);  tauto.
  apply (rem_4033 X1 X2 X3);  tauto.
  apply (rem_3889 X1 X2 X3);  tauto.
Qed.

Remark rem_4035 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_1600 (nonceb_current X2 X3 X1) H);  intros.
  apply (rem_4025 X1 X2 X3);  tauto.
  apply (rem_4034 X1 X2 X3);  tauto.
Qed.

Remark rem_4036 : forall X1 X2 X3:term, auto__q4 (s (nonceb_current X2 X3 X1)) -> auto__q4 X2 -> auto_bob_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 (s (nonceb_current X2 X3 X1)) -> auto_bob_key_current X1 X2). tauto. exact (rem_4035 X1 X2 X3).
Qed.

Remark rem_4037 : forall X1 X2 X3:term, auto_knows_current (crypt (s (nonceb_current X2 X3 X1)) X2) -> auto_bob_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1951 (s (nonceb_current X2 X3 X1)) X2 H);  intros.
  apply (rem_3487 X1 X2 X3);  tauto.
  apply (rem_3631 X1 X2 X3);  tauto.
  apply (rem_3653 X1 X2 X3);  tauto.
  apply (rem_3777 X1 X2 X3);  tauto.
  apply (rem_3855 X1 X2 X3);  tauto.
  apply (rem_3874 X1 X2 X3);  tauto.
  apply (rem_3958 X1 X2 X3);  tauto.
  apply (rem_4036 X1 X2 X3);  tauto.
Qed.

Remark rem_4038 : forall _big_a _big_b _big_kab:term, auto_knows_current (crypt (s (nonceb_current _big_kab _big_a _big_b)) _big_kab) -> auto_bob_key_current _big_b _big_kab. (* Prove equivalent, normalized clause. *)
Proof.
   intros X3 X1 X2.
  cut (auto_knows_current (crypt (s (nonceb_current X2 X3 X1)) X2) -> auto_bob_key_current X1 X2). tauto. exact (rem_4037 X1 X2 X3).
Qed.

Remark rem_4039 : auto_agent bob. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans_agent_bob_1;  tauto.
 tauto.
Qed.

Remark rem_4040 : auto_agent alice. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans_agent_alice_1;  tauto.
 tauto.
Qed.

Remark rem_4041 : forall X1:term, auto__q2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  tauto.
Qed.

Remark rem_4042 : forall X1:term, auto__q2 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4041 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4043 : forall X1:term, auto__q2 X1 -> (auto__q1 pub /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto__q1 pub). 2:apply (rem_4042 X1);  assumption.
  cut (auto__q2 X1). 2:apply (rem_1086 X1);  assumption.
  tauto.
Qed.

Remark rem_4044 : forall X1:term, auto__q2 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4043 X1 A1). clear  A1. intros. apply trans_knows_current_key_7;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4045 : forall X1:term, auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  tauto.
Qed.

Remark rem_4046 : forall X1:term, auto__q4 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4045 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4047 : forall X1:term, auto__q4 X1 -> (auto__q1 pub /\ auto__q4 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto__q1 pub). 2:apply (rem_4046 X1);  assumption.
  cut (auto__q4 X1). 2:apply (rem_1094 X1);  assumption.
  tauto.
Qed.

Remark rem_4048 : forall X1:term, auto__q4 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4047 X1 A1). clear  A1. intros. apply trans_knows_current_key_3;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4049 : forall X1:term, auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  tauto.
Qed.

Remark rem_4050 : forall X1:term, auto__q3 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4049 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4051 : forall X1:term, auto__q3 X1 -> (auto__q1 pub /\ auto__q3 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto__q1 pub). 2:apply (rem_4050 X1);  assumption.
  cut (auto__q3 X1). 2:apply (rem_1101 X1);  assumption.
  tauto.
Qed.

Remark rem_4052 : forall X1:term, auto__q3 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4051 X1 A1). clear  A1. intros. apply trans_knows_current_key_9;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4053 : forall X1:term, auto__q1 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  tauto.
Qed.

Remark rem_4054 : forall X1:term, auto__q1 X1 -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4053 X1 A1). clear  A1. intros. apply trans__q1_pub_1;  tauto.
 clear  A1. tauto.
Qed.

Remark rem_4055 : forall X1:term, auto__q1 X1 -> (auto__q1 pub /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1. intros A1.
  cut (auto__q1 pub). 2:apply (rem_4054 X1);  assumption.
  cut (auto__q1 X1). 2:apply (rem_1108 X1);  assumption.
  tauto.
Qed.

Remark rem_4056 : forall X1:term, auto__q1 X1 -> auto_knows_current (key pub X1). (* Deduce positive atom. *)
Proof.
  intros X1. intros A1.
  case (rem_4055 X1 A1). clear  A1. intros. apply trans_knows_current_key_12;  tauto.
 clear  A1. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4057 : forall X1:term, auto_knows_current (key pub X1). (* Cut. *)
Proof.
  intros X1.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4044 X1)). tauto.
  assert (HH:=(rem_4048 X1)). tauto.
  assert (HH:=(rem_4052 X1)). tauto.
  assert (HH:=(rem_4056 X1)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4058 : forall X:term, auto_knows_current (key pub X). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_current (key pub X1)). tauto. exact (rem_4057 X1).
Qed.

Remark rem_4059 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_4060 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4059 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4061 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4060 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q4_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4062 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_4063 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q4 (s X1) /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 (s X1)). 2:apply (rem_4061 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4062 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4064 : forall X1 X2 X3 X4 X5:term, auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4063 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_4066 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4067 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4066 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4068 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4067 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4069 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_4070 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_4068 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4069 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4071 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4070 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4072 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4073 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4072 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4074 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4073 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4075 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4076 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q2 (s X1) /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 (s X1)). 2:apply (rem_4074 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4075 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4077 : forall X1 X2 X3 X4 X5:term, auto__q1 X2 -> auto__q2 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4076 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_4079 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4080 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4079 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4081 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4080 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4082 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_4083 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_4081 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4082 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4084 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4083 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4085 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_4086 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4085 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4087 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4086 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q4_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4088 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_4089 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q4 (s X1) /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 (s X1)). 2:apply (rem_4087 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4088 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4090 : forall X1 X2 X3 X4 X5:term, auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4089 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

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

Remark rem_4092 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4093 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4092 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4094 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4093 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4095 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_4096 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q2 (s X1) /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q2 (s X1)). 2:apply (rem_4094 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4095 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4097 : forall X1 X2 X3 X4 X5:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4096 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4098 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4099 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4098 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4100 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4099 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q1_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4101 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4102 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q1 (s X1) /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q1 (s X1)). 2:apply (rem_4100 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4101 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4103 : forall X1 X2 X3 X4 X5:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4102 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4104 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_4105 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4104 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4106 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 (s X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4105 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q4_s_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4107 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4 X5.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_4108 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> (auto__q4 (s X1) /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  cut (auto__q4 (s X1)). 2:apply (rem_4106 X1 X2 X3 X4 X5);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4107 X1 X2 X3 X4 X5);  assumption.
  tauto.
Qed.

Remark rem_4109 : forall X1 X2 X3 X4 X5:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intros A1 A2 A3.
  case (rem_4108 X1 X2 X3 X4 X5 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_crypt_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4110 : forall X1 X2 X3 X4 X5:term, auto_knows_current (crypt X1 X2) -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4 X5. intro H. intros.
  elim (rem_1951 X1 X2 H);  intros.
  apply (rem_4065 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4071 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4078 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4084 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4091 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4097 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4103 X1 X2 X3 X4 X5);  tauto.
  apply (rem_4109 X1 X2 X3 X4 X5);  tauto.
Qed.

Remark rem_4111 : forall _big_a _big_b _big_kab _big_msg _big_nb:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_b (cons _big_kab (cons _big_msg nil)))) (key sym (cons _big_a (cons server nil)))) -> auto_knows_current (crypt _big_nb _big_kab) -> auto_knows_current (crypt (s _big_nb) _big_kab). (* Prove equivalent, normalized clause. *)
Proof.
   intros X3 X4 X2 X5 X1.
  cut (auto_knows_current (crypt X1 X2) -> auto_knows_current (crypt (cons (noncea_current X3 X4) (cons X4 (cons X2 (cons X5 nil)))) (key sym (cons X3 (cons server nil)))) -> auto_knows_current (crypt (s X1) X2)). tauto. exact (rem_4110 X1 X2 X3 X4 X5).
Qed.

Remark rem_4112 : auto_knows_current nil. (* Deduce positive atom. *)
Proof.
   case rem_1507. intros. apply trans_knows_current_nil_1;  tauto.
 tauto.
Qed.

Remark rem_4113 : auto__q3 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2919 H);  intros.
Qed.

Remark rem_4114 : forall X1:term, auto__q3 sym -> auto__q4 (session_current alice bob X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_4115 : auto__q4 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2382 H);  intros.
Qed.

Remark rem_4116 : forall X1:term, auto__q2 (session_current alice bob X1) -> auto__q4 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_4117 : forall X1:term, auto__q4 sym -> auto__q2 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 (session_current alice bob X1) -> auto__q4 sym -> False). tauto. exact (rem_4116 X1).
Qed.

Remark rem_4118 : auto__q1 sym -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_1074 H);  intros.
Qed.

Remark rem_4119 : forall X1:term, auto__q1 sym -> auto__q4 (session_current alice bob X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_4120 : auto__q4 bob -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2380 H);  intros.
Qed.

Remark rem_4121 : forall X1:term, auto__q1 X1 -> auto__q4 alice -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4122 : forall X1:term, auto__q4 alice -> auto__q4 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q4 alice -> auto__q4 bob -> False). tauto. exact (rem_4121 X1).
Qed.

Remark rem_4123 : forall X1:term, auto__q1 X1 -> auto__q3 alice -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4124 : forall X1:term, auto__q3 alice -> auto__q4 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 alice -> auto__q4 bob -> False). tauto. exact (rem_4123 X1).
Qed.

Remark rem_4125 : auto__q3 bob -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2916 H);  intros.
Qed.

Remark rem_4126 : forall X1:term, auto__q2 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4127 : forall X1:term, auto__q3 alice -> auto__q3 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_4126 X1).
Qed.

Remark rem_4128 : forall X1:term, auto__q2 bob -> auto__q4 X1 -> auto__q4 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 alice -> False). tauto.
  exact (rem_2390).
Qed.

Remark rem_4129 : forall X1:term, auto__q4 alice -> auto__q2 bob -> auto__q4 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 bob -> auto__q4 X1 -> auto__q4 alice -> False). tauto. exact (rem_4128 X1).
Qed.

Remark rem_4130 : forall X1:term, auto__q1 X1 -> auto__q1 alice -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4131 : forall X1:term, auto__q1 alice -> auto__q4 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 alice -> auto__q4 bob -> False). tauto. exact (rem_4130 X1).
Qed.

Remark rem_4132 : forall X1:term, auto__q1 X1 -> auto__q2 bob -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_2926).
Qed.

Remark rem_4133 : forall X1:term, auto__q3 alice -> auto__q2 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q2 bob -> auto__q3 alice -> False). tauto. exact (rem_4132 X1).
Qed.

Remark rem_4134 : forall X1:term, auto__q2 X1 -> auto__q3 bob -> auto__q4 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4135 : forall X1:term, auto__q4 alice -> auto__q3 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 bob -> auto__q4 alice -> False). tauto. exact (rem_4134 X1).
Qed.

Remark rem_4136 : forall X1:term, auto__q3 X1 -> auto__q3 alice -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4137 : forall X1:term, auto__q3 alice -> auto__q4 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 X1 -> auto__q3 alice -> auto__q4 bob -> False). tauto. exact (rem_4136 X1).
Qed.

Remark rem_4138 : forall X1:term, auto__q1 bob -> auto__q2 alice -> auto__q3 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 alice -> False). tauto.
  exact (rem_2929).
Qed.

Remark rem_4139 : forall X1:term, auto__q2 alice -> auto__q1 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 bob -> auto__q2 alice -> auto__q3 X1 -> False). tauto. exact (rem_4138 X1).
Qed.

Remark rem_4140 : forall X1:term, auto__q1 alice -> auto__q4 X1 -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4141 : forall X1:term, auto__q1 alice -> auto__q4 bob -> auto__q4 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 alice -> auto__q4 X1 -> auto__q4 bob -> False). tauto. exact (rem_4140 X1).
Qed.

Remark rem_4142 : forall X1:term, auto__q3 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4143 : forall X1:term, auto__q3 alice -> auto__q3 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 X1 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_4142 X1).
Qed.

Remark rem_4144 : forall X1:term, auto__q1 X1 -> auto__q1 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4145 : forall X1:term, auto__q1 alice -> auto__q3 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q1 alice -> auto__q3 bob -> False). tauto. exact (rem_4144 X1).
Qed.

Remark rem_4146 : forall X1:term, auto__q3 alice -> auto__q3 bob -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4147 : forall X1:term, auto__q1 bob -> auto__q2 X1 -> auto__q4 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 alice -> False). tauto.
  exact (rem_2390).
Qed.

Remark rem_4148 : forall X1:term, auto__q4 alice -> auto__q1 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 bob -> auto__q2 X1 -> auto__q4 alice -> False). tauto. exact (rem_4147 X1).
Qed.

Remark rem_4149 : forall X1:term, auto__q2 X1 -> auto__q2 bob -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_2926).
Qed.

Remark rem_4150 : forall X1:term, auto__q3 alice -> auto__q2 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q2 bob -> auto__q3 alice -> False). tauto. exact (rem_4149 X1).
Qed.

Remark rem_4151 : forall X1:term, auto__q2 X1 -> auto__q3 alice -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4152 : forall X1:term, auto__q3 alice -> auto__q4 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 X1 -> auto__q3 alice -> auto__q4 bob -> False). tauto. exact (rem_4151 X1).
Qed.

Remark rem_4153 : forall X1:term, auto__q1 alice -> auto__q3 X1 -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4154 : forall X1:term, auto__q1 alice -> auto__q4 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 alice -> auto__q3 X1 -> auto__q4 bob -> False). tauto. exact (rem_4153 X1).
Qed.

Remark rem_4155 : forall X1:term, auto__q3 bob -> auto__q4 X1 -> auto__q4 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4156 : forall X1:term, auto__q4 alice -> auto__q3 bob -> auto__q4 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 bob -> auto__q4 X1 -> auto__q4 alice -> False). tauto. exact (rem_4155 X1).
Qed.

Remark rem_4157 : forall X1:term, auto__q1 alice -> auto__q2 X1 -> auto__q4 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 bob -> False). tauto.
  exact (rem_4120).
Qed.

Remark rem_4158 : forall X1:term, auto__q1 alice -> auto__q4 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 alice -> auto__q2 X1 -> auto__q4 bob -> False). tauto. exact (rem_4157 X1).
Qed.

Remark rem_4159 : forall X1:term, auto__q1 alice -> auto__q2 X1 -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4160 : forall X1:term, auto__q1 alice -> auto__q3 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 alice -> auto__q2 X1 -> auto__q3 bob -> False). tauto. exact (rem_4159 X1).
Qed.

Remark rem_4161 : forall X1:term, auto__q1 bob -> auto__q3 X1 -> auto__q4 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 alice -> False). tauto.
  exact (rem_2390).
Qed.

Remark rem_4162 : forall X1:term, auto__q4 alice -> auto__q1 bob -> auto__q3 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 bob -> auto__q3 X1 -> auto__q4 alice -> False). tauto. exact (rem_4161 X1).
Qed.

Remark rem_4163 : forall X1:term, auto__q1 X1 -> auto__q3 alice -> auto__q3 bob -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 bob -> False). tauto.
  exact (rem_4125).
Qed.

Remark rem_4164 : forall X1:term, auto__q3 alice -> auto__q3 bob -> auto__q1 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 alice -> auto__q3 bob -> False). tauto. exact (rem_4163 X1).
Qed.

Remark rem_4165 : forall X1:term, auto__q1 bob -> auto__q2 X1 -> auto__q3 alice -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 alice -> False). tauto.
  exact (rem_2926).
Qed.

Remark rem_4166 : forall X1:term, auto__q3 alice -> auto__q1 bob -> auto__q2 X1 -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 bob -> auto__q2 X1 -> auto__q3 alice -> False). tauto. exact (rem_4165 X1).
Qed.

Remark rem_4167 : forall X1:term, auto__q3 (session_current alice bob X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_2634 alice bob X1 H);  intros.
  apply (rem_4122 X1);  tauto.
  apply (rem_4124 X1);  tauto.
  apply (rem_4127 X1);  tauto.
  apply (rem_4129 X1);  tauto.
  apply (rem_4131 X1);  tauto.
  apply (rem_4133 X1);  tauto.
  apply (rem_4135 X1);  tauto.
  apply (rem_4137 X1);  tauto.
  apply (rem_4139 X1);  tauto.
  apply (rem_4141 X1);  tauto.
  apply (rem_4143 X1);  tauto.
  apply (rem_4145 X1);  tauto.
  apply (rem_4146 X1);  tauto.
  apply (rem_4148 X1);  tauto.
  apply (rem_4150 X1);  tauto.
  apply (rem_4152 X1);  tauto.
  apply (rem_4154 X1);  tauto.
  apply (rem_4156 X1);  tauto.
  apply (rem_4158 X1);  tauto.
  apply (rem_4160 X1);  tauto.
  apply (rem_4162 X1);  tauto.
  apply (rem_4164 X1);  tauto.
  apply (rem_4166 X1);  tauto.
Qed.

Remark rem_4168 : forall X1:term, auto__q2 sym -> auto__q3 (session_current alice bob X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 (session_current alice bob X1) -> False). tauto.
  exact (rem_4167 X1).
Qed.

Remark rem_4169 : forall X1:term, auto__q1 (session_current alice bob X1) -> auto__q3 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_4170 : forall X1:term, auto__q3 sym -> auto__q1 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (session_current alice bob X1) -> auto__q3 sym -> False). tauto. exact (rem_4169 X1).
Qed.

Remark rem_4171 : forall X1:term, auto__q2 (session_current alice bob X1) -> auto__q3 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_4172 : forall X1:term, auto__q3 sym -> auto__q2 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 (session_current alice bob X1) -> auto__q3 sym -> False). tauto. exact (rem_4171 X1).
Qed.

Remark rem_4173 : forall X1:term, auto__q1 sym -> auto__q2 (session_current alice bob X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_4174 : forall X1:term, auto__q3 (session_current alice bob X1) -> auto__q4 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_4175 : forall X1:term, auto__q4 sym -> auto__q3 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 (session_current alice bob X1) -> auto__q4 sym -> False). tauto. exact (rem_4174 X1).
Qed.

Remark rem_4176 : forall X1:term, auto__q1 sym -> auto__q3 (session_current alice bob X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_4177 : forall X1:term, auto__q3 (session_current alice bob X1) -> auto__q3 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_4178 : forall X1:term, auto__q3 sym -> auto__q3 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 (session_current alice bob X1) -> auto__q3 sym -> False). tauto. exact (rem_4177 X1).
Qed.

Remark rem_4179 : forall X1:term, auto__q1 (session_current alice bob X1) -> auto__q4 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_4180 : forall X1:term, auto__q4 sym -> auto__q1 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (session_current alice bob X1) -> auto__q4 sym -> False). tauto. exact (rem_4179 X1).
Qed.

Remark rem_4181 : forall X1:term, auto__q1 (session_current alice bob X1) -> auto__q1 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_4182 : forall X1:term, auto__q1 sym -> auto__q1 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 (session_current alice bob X1) -> auto__q1 sym -> False). tauto. exact (rem_4181 X1).
Qed.

Remark rem_4183 : forall X1:term, auto__q4 (session_current alice bob X1) -> auto__q4 sym -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_4184 : forall X1:term, auto__q4 sym -> auto__q4 (session_current alice bob X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q4 (session_current alice bob X1) -> auto__q4 sym -> False). tauto. exact (rem_4183 X1).
Qed.

Remark rem_4185 : forall X1:term, auto_knows_current (key sym (session_current alice bob X1)) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_1619 sym (session_current alice bob X1) H);  intros.
  apply (rem_4114 X1);  tauto.
  apply (rem_4117 X1);  tauto.
  apply (rem_4119 X1);  tauto.
  apply (rem_4168 X1);  tauto.
  apply (rem_4170 X1);  tauto.
  apply (rem_4172 X1);  tauto.
  apply (rem_4173 X1);  tauto.
  apply (rem_4175 X1);  tauto.
  apply (rem_4176 X1);  tauto.
  apply (rem_4178 X1);  tauto.
  apply (rem_4180 X1);  tauto.
  apply (rem_4182 X1);  tauto.
  apply (rem_4184 X1);  tauto.
Qed.

Remark rem_4186 : forall X1:term, auto_knows_current (key sym (session_current alice bob X1)) -> auto___query__intruder_knows_session_key_generated_by_server. (* Split. *)
Proof.
  intros X1.
  cut (auto_knows_current (key sym (session_current alice bob X1)) -> False). tauto.
  exact (rem_4185 X1).
Qed.

Remark rem_4187 : forall _big_na:term, auto_knows_current (key sym (session_current alice bob _big_na)) -> auto___query__intruder_knows_session_key_generated_by_server. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_knows_current (key sym (session_current alice bob X1)) -> auto___query__intruder_knows_session_key_generated_by_server). tauto. exact (rem_4186 X1).
Qed.

Remark rem_4188 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4189 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4188 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4190 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1092 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_38;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4191 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4189 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4190 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4192 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4191 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4193 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4194 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4193 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4195 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1098 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_17;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4196 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4194 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4195 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4197 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4196 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4198 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4197 X1 X2 X3).
Qed.

Remark rem_4199 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4200 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4199 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4201 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1105 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_47;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4202 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4200 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4201 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4203 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4202 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4204 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4203 X1 X2 X3).
Qed.

Remark rem_4205 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4206 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4205 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4207 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1112 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_22;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4208 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4206 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4207 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4209 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4208 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4210 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4192 X1 X2 X3)). tauto.
  assert (HH:=(rem_4198 X1 X2 X3)). tauto.
  assert (HH:=(rem_4204 X1 X2 X3)). tauto.
  assert (HH:=(rem_4209 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4211 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4212 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4211 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4213 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1119 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_30;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4214 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4212 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4213 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4215 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4214 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4216 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4217 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4216 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4218 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1124 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4219 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4217 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4218 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4220 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4219 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4221 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4220 X1 X2 X3).
Qed.

Remark rem_4222 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4223 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4222 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4224 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1130 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_49;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4225 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4223 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4224 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4226 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4225 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4227 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4226 X1 X2 X3).
Qed.

Remark rem_4228 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4229 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4228 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4230 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1136 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_54;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4231 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4229 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4230 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4232 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4231 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4233 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4215 X1 X2 X3)). tauto.
  assert (HH:=(rem_4221 X1 X2 X3)). tauto.
  assert (HH:=(rem_4227 X1 X2 X3)). tauto.
  assert (HH:=(rem_4232 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4234 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4233 X1 X2 X3).
Qed.

Remark rem_4235 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4236 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4235 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4237 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1144 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_46;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4238 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4236 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4237 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4239 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4238 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4240 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4241 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4240 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4242 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1149 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_20;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4243 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4241 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4242 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4244 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4243 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4245 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4244 X1 X2 X3).
Qed.

Remark rem_4246 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4247 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4246 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4248 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1155 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_9;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4249 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4247 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4248 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4250 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4249 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4251 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4250 X1 X2 X3).
Qed.

Remark rem_4252 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4253 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4252 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4254 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1161 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_56;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4255 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4253 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4254 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4256 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4255 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4257 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4239 X1 X2 X3)). tauto.
  assert (HH:=(rem_4245 X1 X2 X3)). tauto.
  assert (HH:=(rem_4251 X1 X2 X3)). tauto.
  assert (HH:=(rem_4256 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4258 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4257 X1 X2 X3).
Qed.

Remark rem_4259 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4260 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4259 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4261 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1169 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_15;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4262 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4260 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4261 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4263 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4262 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4264 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4263 X1 X2 X3).
Qed.

Remark rem_4265 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4266 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4265 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4267 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1175 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_45;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4268 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4266 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4267 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4269 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4268 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4270 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4269 X1 X2 X3).
Qed.

Remark rem_4271 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4272 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4271 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4273 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1181 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_64;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4274 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4272 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4273 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4275 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4274 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4276 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4275 X1 X2 X3).
Qed.

Remark rem_4277 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4278 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4277 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4279 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1187 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_19;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4280 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4278 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4279 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4281 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4280 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4282 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4264 X1 X2 X3)). tauto.
  assert (HH:=(rem_4270 X1 X2 X3)). tauto.
  assert (HH:=(rem_4276 X1 X2 X3)). tauto.
  assert (HH:=(rem_4281 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4283 : forall X1 X2 X3:term, auto__q2 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_4210 X1 X2 X3)). tauto.
  assert (HH:=(rem_4234 X1 X2 X3)). tauto.
  assert (HH:=(rem_4258 X1 X2 X3)). tauto.
  assert (HH:=(rem_4282 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_4284 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4285 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4284 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4286 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1195 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_27;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4287 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4285 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4286 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4288 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4287 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4289 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4290 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4289 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4291 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1200 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4292 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4290 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4291 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4293 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4292 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4294 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4293 X1 X2 X3).
Qed.

Remark rem_4295 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4296 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4295 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4297 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1206 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_14;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4298 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4296 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4297 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4299 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4298 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4300 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4299 X1 X2 X3).
Qed.

Remark rem_4301 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4302 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4301 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4303 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1212 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_42;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4304 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4302 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4303 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4305 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4304 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4306 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4288 X1 X2 X3)). tauto.
  assert (HH:=(rem_4294 X1 X2 X3)). tauto.
  assert (HH:=(rem_4300 X1 X2 X3)). tauto.
  assert (HH:=(rem_4305 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4307 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4308 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4307 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4309 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1218 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_34;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4310 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4308 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4309 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4311 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4310 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4312 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4313 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4312 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4314 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1223 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4315 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4313 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4314 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4316 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4315 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4317 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4318 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4317 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4319 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1228 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_35;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4320 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4318 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4319 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4321 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4320 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4322 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4323 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4322 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4324 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1233 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_33;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4325 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4323 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4324 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4326 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4325 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4327 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4311 X1 X2 X3)). tauto.
  assert (HH:=(rem_4316 X1 X2 X3)). tauto.
  assert (HH:=(rem_4321 X1 X2 X3)). tauto.
  assert (HH:=(rem_4326 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4328 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4329 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4328 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4330 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1239 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_31;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4331 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4329 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4330 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4332 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4331 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4333 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4334 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4333 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4335 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1244 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_52;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4336 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4334 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4335 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4337 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4336 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4338 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4337 X1 X2 X3).
Qed.

Remark rem_4339 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4340 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4339 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4341 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1250 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_40;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4342 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4340 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4341 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4343 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4342 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4344 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4345 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4344 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4346 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1255 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_23;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4347 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4345 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4346 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4348 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4347 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4349 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4332 X1 X2 X3)). tauto.
  assert (HH:=(rem_4338 X1 X2 X3)). tauto.
  assert (HH:=(rem_4343 X1 X2 X3)). tauto.
  assert (HH:=(rem_4348 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4350 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4351 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4350 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4352 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1261 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_60;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4353 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4351 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4352 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4354 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4353 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4355 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4354 X1 X2 X3).
Qed.

Remark rem_4356 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4357 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4356 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4358 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1267 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_53;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4359 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4357 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4358 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4360 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4359 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4361 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q4 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4360 X1 X2 X3).
Qed.

Remark rem_4362 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4363 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4362 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4364 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1273 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_48;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4365 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4363 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4364 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4366 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4365 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4367 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4366 X1 X2 X3).
Qed.

Remark rem_4368 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4369 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4368 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4370 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1279 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_50;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4371 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4369 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4370 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4372 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4371 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4373 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4355 X1 X2 X3)). tauto.
  assert (HH:=(rem_4361 X1 X2 X3)). tauto.
  assert (HH:=(rem_4367 X1 X2 X3)). tauto.
  assert (HH:=(rem_4372 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4374 : forall X1 X2 X3:term, auto__q4 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_4306 X1 X2 X3)). tauto.
  assert (HH:=(rem_4327 X1 X2 X3)). tauto.
  assert (HH:=(rem_4349 X1 X2 X3)). tauto.
  assert (HH:=(rem_4373 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_4375 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4376 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4375 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4377 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1287 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_7;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4378 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4376 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4377 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4379 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4378 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4380 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4381 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4380 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4382 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1292 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_28;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4383 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4381 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4382 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4384 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4383 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4385 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4384 X1 X2 X3).
Qed.

Remark rem_4386 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4387 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4386 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4388 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1298 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_16;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4389 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4387 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4388 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4390 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4389 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4391 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4390 X1 X2 X3).
Qed.

Remark rem_4392 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4393 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4392 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4394 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1304 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4395 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4393 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4394 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4396 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4395 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4397 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4379 X1 X2 X3)). tauto.
  assert (HH:=(rem_4385 X1 X2 X3)). tauto.
  assert (HH:=(rem_4391 X1 X2 X3)). tauto.
  assert (HH:=(rem_4396 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4398 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4399 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4398 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4400 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1310 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_57;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4401 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4399 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4400 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4402 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4401 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4403 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4404 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4403 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4405 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1315 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_62;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4406 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4404 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4405 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4407 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4406 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4408 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4407 X1 X2 X3).
Qed.

Remark rem_4409 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4410 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4409 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4411 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1321 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_24;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4412 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4410 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4411 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4413 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4412 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4414 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4415 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4414 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4416 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1326 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_51;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4417 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4415 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4416 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4418 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4417 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4419 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4402 X1 X2 X3)). tauto.
  assert (HH:=(rem_4408 X1 X2 X3)). tauto.
  assert (HH:=(rem_4413 X1 X2 X3)). tauto.
  assert (HH:=(rem_4418 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4420 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4419 X1 X2 X3).
Qed.

Remark rem_4421 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4422 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4421 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4423 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1333 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_29;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4424 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4422 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4423 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4425 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4424 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4426 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4427 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4426 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4428 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1338 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_63;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4429 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4427 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4428 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4430 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4429 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4431 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4430 X1 X2 X3).
Qed.

Remark rem_4432 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4433 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4432 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4434 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1344 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_37;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4435 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4433 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4434 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4436 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4435 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4437 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4438 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4437 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4439 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1349 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4440 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4438 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4439 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4441 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4440 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4442 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4425 X1 X2 X3)). tauto.
  assert (HH:=(rem_4431 X1 X2 X3)). tauto.
  assert (HH:=(rem_4436 X1 X2 X3)). tauto.
  assert (HH:=(rem_4441 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4443 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4444 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4443 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4445 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1355 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_26;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4446 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4444 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4445 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4447 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4446 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4448 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4447 X1 X2 X3).
Qed.

Remark rem_4449 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4450 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4449 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4451 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1361 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_59;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4452 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4450 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4451 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4453 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4452 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4454 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4453 X1 X2 X3).
Qed.

Remark rem_4455 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4456 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4455 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4457 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1367 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4458 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4456 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4457 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4459 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4458 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4460 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4459 X1 X2 X3).
Qed.

Remark rem_4461 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4462 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4461 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4463 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1373 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_58;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4464 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4462 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4463 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4465 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4464 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4466 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4448 X1 X2 X3)). tauto.
  assert (HH:=(rem_4454 X1 X2 X3)). tauto.
  assert (HH:=(rem_4460 X1 X2 X3)). tauto.
  assert (HH:=(rem_4465 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4467 : forall X1 X2 X3:term, auto__q3 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_4397 X1 X2 X3)). tauto.
  assert (HH:=(rem_4420 X1 X2 X3)). tauto.
  assert (HH:=(rem_4442 X1 X2 X3)). tauto.
  assert (HH:=(rem_4466 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Remark rem_4468 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4469 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4468 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4470 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1381 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_25;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4471 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4469 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4470 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4472 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4471 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4473 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4472 X1 X2 X3).
Qed.

Remark rem_4474 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4475 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4474 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4476 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1387 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_43;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4477 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4475 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4476 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4478 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4477 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4479 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4478 X1 X2 X3).
Qed.

Remark rem_4480 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4481 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4480 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4482 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1393 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_18;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4483 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4481 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4482 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4484 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4483 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4485 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4484 X1 X2 X3).
Qed.

Remark rem_4486 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4487 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4486 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4488 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1399 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_5;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4489 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4487 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4488 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4490 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4489 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4491 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4473 X1 X2 X3)). tauto.
  assert (HH:=(rem_4479 X1 X2 X3)). tauto.
  assert (HH:=(rem_4485 X1 X2 X3)). tauto.
  assert (HH:=(rem_4490 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4492 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4491 X1 X2 X3).
Qed.

Remark rem_4493 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4494 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4493 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4495 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1406 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_41;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4496 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4494 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4495 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4497 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4496 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4498 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4497 X1 X2 X3).
Qed.

Remark rem_4499 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4500 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4499 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4501 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1412 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_2;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4502 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4500 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4501 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4503 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4502 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4504 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4503 X1 X2 X3).
Qed.

Remark rem_4505 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4506 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4505 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4507 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1418 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4508 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4506 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4507 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4509 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4508 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4510 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4509 X1 X2 X3).
Qed.

Remark rem_4511 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4512 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4511 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4513 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1424 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_11;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4514 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4512 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4513 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4515 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4514 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4516 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4498 X1 X2 X3)). tauto.
  assert (HH:=(rem_4504 X1 X2 X3)). tauto.
  assert (HH:=(rem_4510 X1 X2 X3)). tauto.
  assert (HH:=(rem_4515 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4517 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q4 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4516 X1 X2 X3).
Qed.

Remark rem_4518 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4519 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4518 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4520 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1431 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_21;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4521 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4519 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4520 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4522 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4521 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4523 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4522 X1 X2 X3).
Qed.

Remark rem_4524 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4525 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4524 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4526 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1437 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_36;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4527 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4525 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4526 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4528 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4527 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4529 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4528 X1 X2 X3).
Qed.

Remark rem_4530 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4531 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4530 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4532 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1443 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_61;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4533 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4531 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4532 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4534 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4533 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4535 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4534 X1 X2 X3).
Qed.

Remark rem_4536 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4537 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4536 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4538 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1449 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_39;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4539 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4537 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4538 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4540 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4539 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4541 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4523 X1 X2 X3)). tauto.
  assert (HH:=(rem_4529 X1 X2 X3)). tauto.
  assert (HH:=(rem_4535 X1 X2 X3)). tauto.
  assert (HH:=(rem_4540 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Remark rem_4542 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q3 X2 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4541 X1 X2 X3).
Qed.

Remark rem_4543 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4544 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4543 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4545 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1456 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_13;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4546 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4544 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4545 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4547 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4546 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4548 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4547 X1 X2 X3).
Qed.

Remark rem_4549 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4550 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4549 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4551 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1462 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_55;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4552 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4550 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4551 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4553 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4552 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4554 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4553 X1 X2 X3).
Qed.

Remark rem_4555 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4556 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4555 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4557 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1468 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_44;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4558 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4556 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4557 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4559 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4558 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4560 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4559 X1 X2 X3).
Qed.

Remark rem_4561 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  tauto.
Qed.

Remark rem_4562 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 sym. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4561 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q2_sym_1;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4563 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (session_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_1474 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans__q3_session_old_32;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_4564 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 sym /\ auto__q3 (session_old X1 X2 X3)) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 sym). 2:apply (rem_4562 X1 X2 X3);  assumption.
  cut (auto__q3 (session_old X1 X2 X3)). 2:apply (rem_4563 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4565 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4564 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_knows_current_key_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4566 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X1) (auto__q4 X1) (auto__q3 X1) (auto__q1 X1)). intro H. elim H.
  assert (HH:=(rem_4548 X1 X2 X3)). tauto.
  assert (HH:=(rem_4554 X1 X2 X3)). tauto.
  assert (HH:=(rem_4560 X1 X2 X3)). tauto.
  assert (HH:=(rem_4565 X1 X2 X3)). tauto.
  assert (HH:=(rem_1085 X1)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4567 : forall X1 X2 X3:term, auto__q1 X3 -> auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X2) (auto__q4 X2) (auto__q3 X2) (auto__q1 X2)). intro H. elim H.
  assert (HH:=(rem_4492 X1 X2 X3)). tauto.
  assert (HH:=(rem_4517 X1 X2 X3)). tauto.
  assert (HH:=(rem_4542 X1 X2 X3)). tauto.
  assert (HH:=(rem_4566 X1 X2 X3)). tauto.
  assert (HH:=(rem_1084 X2)). intuition auto with or_4_hint.
Qed.

Hint Constructors or_4 : or_4_hint.

Remark rem_4568 : forall X1 X2 X3:term, auto_knows_current (key sym (session_old X1 X2 X3)). (* Cut. *)
Proof.
  intros X1 X2 X3.
  cut (or_4 (auto__q2 X3) (auto__q4 X3) (auto__q3 X3) (auto__q1 X3)). intro H. elim H.
  assert (HH:=(rem_4283 X1 X2 X3)). tauto.
  assert (HH:=(rem_4374 X1 X2 X3)). tauto.
  assert (HH:=(rem_4467 X1 X2 X3)). tauto.
  assert (HH:=(rem_4567 X1 X2 X3)). tauto.
  assert (HH:=(rem_1083 X3)). intuition auto with or_4_hint.
Qed.

Remark rem_4569 : forall _big_a _big_b _big_na:term, auto_knows_current (key sym (session_old _big_a _big_b _big_na)). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto_knows_current (key sym (session_old X1 X2 X3))). tauto. exact (rem_4568 X1 X2 X3).
Qed.

Remark rem_4570 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4571 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4572 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4573 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4570 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4571 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4572 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4574 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4573 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_20;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4575 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4574 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4570 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4576 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4575 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4577 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4576 X1 X2 X3).
Qed.

Remark rem_4578 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_796 X3 (cons server nil) H);  intros.
  apply (rem_4577 X1 X2 X3);  tauto.
Qed.

Remark rem_4579 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4578 X1 X2 X3).
Qed.

Remark rem_4580 : forall X1 X2 X3:term, auto__q2 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4579 X1 X2 X3).
Qed.

Remark rem_4581 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4582 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4583 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_4584 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4581 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4582 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4583 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4585 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4584 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4586 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4585 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4581 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4587 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4586 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4588 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q2 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4587 X1 X2 X3).
Qed.

Remark rem_4589 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4590 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4591 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4592 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4589 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4590 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4591 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4593 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4592 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_20;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4594 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4593 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4589 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4595 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4594 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4596 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4595 X1 X2 X3).
Qed.

Remark rem_4597 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4598 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4599 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_4600 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4597 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4598 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4599 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4601 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4600 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4602 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4601 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4597 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4603 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4602 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4604 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4603 X1 X2 X3).
Qed.

Remark rem_4605 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_500 X3 (cons server nil) H);  intros.
  apply (rem_4588 X1 X2 X3);  tauto.
  apply (rem_4596 X1 X2 X3);  tauto.
  apply (rem_4604 X1 X2 X3);  tauto.
Qed.

Remark rem_4606 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q2 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4605 X1 X2 X3).
Qed.

Remark rem_4607 : forall X1 X2 X3:term, auto__q2 sym -> auto__q2 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q2 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4606 X1 X2 X3).
Qed.

Remark rem_4608 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1634 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4580 X1 X2 X3);  tauto.
  apply (rem_4607 X1 X2 X3);  tauto.
Qed.

Remark rem_4609 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 nil -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4608 X1 X2 X3).
Qed.

Remark rem_4610 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X1 -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 nil -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4609 X1 X2 X3).
Qed.

Remark rem_4611 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_796 X2 nil H);  intros.
  apply (rem_4610 X1 X2 X3);  tauto.
Qed.

Remark rem_4612 : forall X1 X2 X3:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q4 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_796 X1 (cons X2 nil) H);  intros.
  apply (rem_4611 X1 X2 X3);  tauto.
Qed.

Remark rem_4613 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4578 X1 X2 X3).
Qed.

Remark rem_4614 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4613 X1 X2 X3).
Qed.

Remark rem_4615 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4578 X1 X2 X3).
Qed.

Remark rem_4616 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4615 X1 X2 X3).
Qed.

Remark rem_4617 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4614 X1 X2 X3);  tauto.
  apply (rem_4616 X1 X2 X3);  tauto.
Qed.

Remark rem_4618 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4617 X1 X2 X3).
Qed.

Remark rem_4619 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 nil -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4618 X1 X2 X3).
Qed.

Remark rem_4620 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_796 X2 nil H);  intros.
  apply (rem_4619 X1 X2 X3);  tauto.
Qed.

Remark rem_4621 : forall X1 X2 X3:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_796 X1 (cons X2 nil) H);  intros.
  apply (rem_4620 X1 X2 X3);  tauto.
Qed.

Remark rem_4622 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4623 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4624 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4625 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_4622 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4623 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4624 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4626 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4625 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4627 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4626 X1 X2 X3);  assumption.
  cut (auto__q2 X1). 2:apply (rem_4622 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4628 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4627 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4629 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4628 X1 X2 X3).
Qed.

Remark rem_4630 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_796 X3 (cons server nil) H);  intros.
  apply (rem_4629 X1 X2 X3);  tauto.
Qed.

Remark rem_4631 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4630 X1 X2 X3).
Qed.

Remark rem_4632 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4631 X1 X2 X3).
Qed.

Remark rem_4633 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4630 X1 X2 X3).
Qed.

Remark rem_4634 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X2 -> auto__q2 X1 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4633 X1 X2 X3).
Qed.

Remark rem_4635 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4632 X1 X2 X3);  tauto.
  apply (rem_4634 X1 X2 X3);  tauto.
Qed.

Remark rem_4636 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4635 X1 X2 X3).
Qed.

Remark rem_4637 : forall X1 X2 X3:term, auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_796 X2 nil H);  intros.
  apply (rem_4636 X1 X2 X3);  tauto.
Qed.

Remark rem_4638 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 (cons X2 nil) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X2 nil) -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4637 X1 X2 X3).
Qed.

Remark rem_4639 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4640 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_4641 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4642 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4639 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4640 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4641 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4643 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4642 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4644 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4643 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4639 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4645 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4644 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4646 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4645 X1 X2 X3).
Qed.

Remark rem_4647 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_796 X3 (cons server nil) H);  intros.
  apply (rem_4646 X1 X2 X3);  tauto.
Qed.

Remark rem_4648 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4647 X1 X2 X3).
Qed.

Remark rem_4649 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4648 X1 X2 X3).
Qed.

Remark rem_4650 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4647 X1 X2 X3).
Qed.

Remark rem_4651 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X2 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4650 X1 X2 X3).
Qed.

Remark rem_4652 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4649 X1 X2 X3);  tauto.
  apply (rem_4651 X1 X2 X3);  tauto.
Qed.

Remark rem_4653 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4652 X1 X2 X3).
Qed.

Remark rem_4654 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q1 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 nil -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4653 X1 X2 X3).
Qed.

Remark rem_4655 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4617 X1 X2 X3).
Qed.

Remark rem_4656 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 nil -> auto__q1 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4655 X1 X2 X3).
Qed.

Remark rem_4657 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4652 X1 X2 X3).
Qed.

Remark rem_4658 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q1 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4657 X1 X2 X3).
Qed.

Remark rem_4659 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_500 X2 nil H);  intros.
  apply (rem_4654 X1 X2 X3);  tauto.
  apply (rem_4656 X1 X2 X3);  tauto.
  apply (rem_4658 X1 X2 X3);  tauto.
Qed.

Remark rem_4660 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_4661 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_4662 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4663 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_4660 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4661 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4662 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4664 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4663 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q2_nonceb_old_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4665 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> (auto__q2 (nonceb_old X1 X2 X3) /\ auto__q2 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 (nonceb_old X1 X2 X3)). 2:apply (rem_4664 X1 X2 X3);  assumption.
  cut (auto__q2 X1). 2:apply (rem_4660 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4666 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4665 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4667 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_796 X3 (cons server nil) H);  intros.
  apply (rem_4666 X1 X2 X3);  tauto.
Qed.

Remark rem_4668 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4667 X1 X2 X3).
Qed.

Remark rem_4669 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4668 X1 X2 X3).
Qed.

Remark rem_4670 : forall X1 X2 X3:term, auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4667 X1 X2 X3).
Qed.

Remark rem_4671 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 (cons server nil)) -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4670 X1 X2 X3).
Qed.

Remark rem_4672 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4669 X1 X2 X3);  tauto.
  apply (rem_4671 X1 X2 X3);  tauto.
Qed.

Remark rem_4673 : forall X1 X2 X3:term, auto__q1 nil -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4672 X1 X2 X3).
Qed.

Remark rem_4674 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q1 nil -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 nil -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4673 X1 X2 X3).
Qed.

Remark rem_4675 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4635 X1 X2 X3).
Qed.

Remark rem_4676 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 nil -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4675 X1 X2 X3).
Qed.

Remark rem_4677 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4672 X1 X2 X3).
Qed.

Remark rem_4678 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 nil -> auto__q2 X1 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto__q2 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4677 X1 X2 X3).
Qed.

Remark rem_4679 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X2 nil) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_500 X2 nil H);  intros.
  apply (rem_4674 X1 X2 X3);  tauto.
  apply (rem_4676 X1 X2 X3);  tauto.
  apply (rem_4678 X1 X2 X3);  tauto.
Qed.

Remark rem_4680 : forall X1 X2 X3:term, auto__q2 (cons X1 (cons X2 nil)) -> auto__q2 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_500 X1 (cons X2 nil) H);  intros.
  apply (rem_4638 X1 X2 X3);  tauto.
  apply (rem_4659 X1 X2 X3);  tauto.
  apply (rem_4679 X1 X2 X3);  tauto.
Qed.

Remark rem_4681 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 sym -> auto__q4 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_4682 : forall X1 X2 X3:term, auto__q3 sym -> auto__q4 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 sym -> auto__q4 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4681 X1 X2 X3).
Qed.

Remark rem_4683 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4605 X1 X2 X3).
Qed.

Remark rem_4684 : forall X1 X2 X3:term, auto__q4 sym -> auto__q2 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4683 X1 X2 X3).
Qed.

Remark rem_4685 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q4 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_4686 : forall X1 X2 X3:term, auto__q1 sym -> auto__q4 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q4 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4685 X1 X2 X3).
Qed.

Remark rem_4687 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4688 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4689 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_1285 X3).
Qed.

Remark rem_4690 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4687 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4688 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4689 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4691 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4690 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_41;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4692 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4691 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4687 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4693 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4692 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4694 : forall X1 X2 X3:term, auto__q3 X3 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4693 X1 X2 X3).
Qed.

Remark rem_4695 : auto__q2 server -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_641 H);  intros.
Qed.

Remark rem_4696 : auto__q1 nil -> auto__q2 server -> False. (* Split. *)
Proof.
 
  cut (auto__q2 server -> False). tauto.
  exact rem_4695.
Qed.

Remark rem_4697 : auto__q2 server -> auto__q1 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q1 nil -> auto__q2 server -> False). tauto. exact (rem_4696).
Qed.

Remark rem_4698 : auto__q2 nil -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_642 H);  intros.
Qed.

Remark rem_4699 : auto__q1 server -> auto__q2 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q2 nil -> False). tauto.
  exact rem_4698.
Qed.

Remark rem_4700 : auto__q2 nil -> auto__q2 server -> False. (* Split. *)
Proof.
 
  cut (auto__q2 server -> False). tauto.
  exact rem_4695.
Qed.

Remark rem_4701 : auto__q2 server -> auto__q2 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q2 nil -> auto__q2 server -> False). tauto. exact (rem_4700).
Qed.

Remark rem_4702 : auto__q2 (cons server nil) -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_500 server nil H);  intros.
  apply rem_4697;  tauto.
  apply rem_4699;  tauto.
  apply rem_4701;  tauto.
Qed.

Remark rem_4703 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 (cons server nil) -> False). tauto.
  exact (rem_4702).
Qed.

Remark rem_4704 : forall X1 X2 X3:term, auto__q4 X3 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4703 X1 X2 X3).
Qed.

Remark rem_4705 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4706 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4707 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_1379 X3).
Qed.

Remark rem_4708 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4705 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4706 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4707 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4709 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4708 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_20;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4710 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4709 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4705 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4711 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4710 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4712 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4711 X1 X2 X3).
Qed.

Remark rem_4713 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_4714 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_4715 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_1090 X3).
Qed.

Remark rem_4716 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_4713 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4714 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4715 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4717 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4716 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans__q1_nonceb_old_14;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4718 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> (auto__q1 (nonceb_old X1 X2 X3) /\ auto__q1 X1) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 (nonceb_old X1 X2 X3)). 2:apply (rem_4717 X1 X2 X3);  assumption.
  cut (auto__q1 X1). 2:apply (rem_4713 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_4719 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_4718 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_4720 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4719 X1 X2 X3).
Qed.

Remark rem_4721 : auto__q4 nil -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2378 H);  intros.
Qed.

Remark rem_4722 : auto__q3 server -> auto__q4 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q4 nil -> False). tauto.
  exact rem_4721.
Qed.

Remark rem_4723 : auto__q2 nil -> auto__q4 server -> False. (* Split. *)
Proof.
 
  cut (auto__q2 nil -> False). tauto.
  exact rem_4698.
Qed.

Remark rem_4724 : auto__q4 server -> auto__q2 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q2 nil -> auto__q4 server -> False). tauto. exact (rem_4723).
Qed.

Remark rem_4725 : auto__q1 server -> auto__q4 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q4 nil -> False). tauto.
  exact rem_4721.
Qed.

Remark rem_4726 : auto__q2 server -> auto__q4 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q2 server -> False). tauto.
  exact rem_4695.
Qed.

Remark rem_4727 : auto__q3 nil -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2914 H);  intros.
Qed.

Remark rem_4728 : auto__q3 nil -> auto__q4 server -> False. (* Split. *)
Proof.
 
  cut (auto__q3 nil -> False). tauto.
  exact rem_4727.
Qed.

Remark rem_4729 : auto__q4 server -> auto__q3 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q3 nil -> auto__q4 server -> False). tauto. exact (rem_4728).
Qed.

Remark rem_4730 : auto__q4 nil -> auto__q4 server -> False. (* Split. *)
Proof.
 
  cut (auto__q4 nil -> False). tauto.
  exact rem_4721.
Qed.

Remark rem_4731 : auto__q4 server -> auto__q4 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q4 nil -> auto__q4 server -> False). tauto. exact (rem_4730).
Qed.

Remark rem_4732 : auto__q3 (cons server nil) -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2676 server nil H);  intros.
  apply rem_4722;  tauto.
  apply rem_4724;  tauto.
  apply rem_4725;  tauto.
  apply rem_4726;  tauto.
  apply rem_4729;  tauto.
  apply rem_4731;  tauto.
Qed.

Remark rem_4733 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons server nil) -> False). tauto.
  exact (rem_4732).
Qed.

Remark rem_4734 : forall X1 X2 X3:term, auto__q4 X3 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X3 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4733 X1 X2 X3).
Qed.

Remark rem_4735 : auto__q2 server -> auto__q3 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q3 nil -> False). tauto.
  exact rem_4727.
Qed.

Remark rem_4736 : auto__q3 server -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2912 H);  intros.
Qed.

Remark rem_4737 : auto__q1 nil -> auto__q3 server -> False. (* Split. *)
Proof.
 
  cut (auto__q3 server -> False). tauto.
  exact rem_4736.
Qed.

Remark rem_4738 : auto__q3 server -> auto__q1 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q1 nil -> auto__q3 server -> False). tauto. exact (rem_4737).
Qed.

Remark rem_4739 : auto__q2 nil -> auto__q3 server -> False. (* Split. *)
Proof.
 
  cut (auto__q2 nil -> False). tauto.
  exact rem_4698.
Qed.

Remark rem_4740 : auto__q3 server -> auto__q2 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q2 nil -> auto__q3 server -> False). tauto. exact (rem_4739).
Qed.

Remark rem_4741 : auto__q1 server -> auto__q3 nil -> False. (* Split. *)
Proof.
 
  cut (auto__q3 nil -> False). tauto.
  exact rem_4727.
Qed.

Remark rem_4742 : auto__q3 nil -> auto__q3 server -> False. (* Split. *)
Proof.
 
  cut (auto__q3 nil -> False). tauto.
  exact rem_4727.
Qed.

Remark rem_4743 : auto__q3 server -> auto__q3 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q3 nil -> auto__q3 server -> False). tauto. exact (rem_4742).
Qed.

Remark rem_4744 : auto__q4 server -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2377 H);  intros.
Qed.

Remark rem_4745 : auto__q1 nil -> auto__q4 server -> False. (* Split. *)
Proof.
 
  cut (auto__q4 server -> False). tauto.
  exact rem_4744.
Qed.

Remark rem_4746 : auto__q4 server -> auto__q1 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
  
  cut (auto__q1 nil -> auto__q4 server -> False). tauto. exact (rem_4745).
Qed.

Remark rem_4747 : auto__q4 (cons server nil) -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2013 server nil H);  intros.
  apply rem_4735;  tauto.
  apply rem_4738;  tauto.
  apply rem_4740;  tauto.
  apply rem_4741;  tauto.
  apply rem_4743;  tauto.
  apply rem_4746;  tauto.
Qed.

Remark rem_4748 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 (cons server nil) -> False). tauto.
  exact (rem_4747).
Qed.

Remark rem_4749 : forall X1 X2 X3:term, auto__q4 X3 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 (cons server nil) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4748 X1 X2 X3).
Qed.

Remark rem_4750 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons server nil) H);  intros.
  apply (rem_4694 X1 X2 X3);  tauto.
  apply (rem_4704 X1 X2 X3);  tauto.
  apply (rem_4712 X1 X2 X3);  tauto.
  apply (rem_4720 X1 X2 X3);  tauto.
  apply (rem_4734 X1 X2 X3);  tauto.
  apply (rem_4749 X1 X2 X3);  tauto.
Qed.

Remark rem_4751 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 sym -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4750 X1 X2 X3).
Qed.

Remark rem_4752 : forall X1 X2 X3:term, auto__q2 sym -> auto__q3 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 sym -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4751 X1 X2 X3).
Qed.

Remark rem_4753 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4605 X1 X2 X3).
Qed.

Remark rem_4754 : forall X1 X2 X3:term, auto__q3 sym -> auto__q2 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4753 X1 X2 X3).
Qed.

Remark rem_4755 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4605 X1 X2 X3).
Qed.

Remark rem_4756 : forall X1 X2 X3:term, auto__q1 sym -> auto__q2 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q2 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4755 X1 X2 X3).
Qed.

Remark rem_4757 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4750 X1 X2 X3).
Qed.

Remark rem_4758 : forall X1 X2 X3:term, auto__q4 sym -> auto__q3 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4757 X1 X2 X3).
Qed.

Remark rem_4759 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4750 X1 X2 X3).
Qed.

Remark rem_4760 : forall X1 X2 X3:term, auto__q1 sym -> auto__q3 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 sym -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4759 X1 X2 X3).
Qed.

Remark rem_4761 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4750 X1 X2 X3).
Qed.

Remark rem_4762 : forall X1 X2 X3:term, auto__q3 sym -> auto__q3 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 (cons server nil)) -> auto__q3 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4761 X1 X2 X3).
Qed.

Remark rem_4763 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4578 X1 X2 X3).
Qed.

Remark rem_4764 : forall X1 X2 X3:term, auto__q1 sym -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 (cons server nil)) -> auto__q1 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4763 X1 X2 X3).
Qed.

Remark rem_4765 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_4766 : forall X1 X2 X3:term, auto__q4 sym -> auto__q4 (cons X3 (cons server nil)) -> auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons X3 (cons server nil)) -> auto__q4 sym -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4765 X1 X2 X3).
Qed.

Remark rem_4767 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_725 sym (cons X3 (cons server nil)) H);  intros.
  apply (rem_4682 X1 X2 X3);  tauto.
  apply (rem_4684 X1 X2 X3);  tauto.
  apply (rem_4686 X1 X2 X3);  tauto.
  apply (rem_4752 X1 X2 X3);  tauto.
  apply (rem_4754 X1 X2 X3);  tauto.
  apply (rem_4756 X1 X2 X3);  tauto.
  apply (rem_4758 X1 X2 X3);  tauto.
  apply (rem_4760 X1 X2 X3);  tauto.
  apply (rem_4762 X1 X2 X3);  tauto.
  apply (rem_4764 X1 X2 X3);  tauto.
  apply (rem_4766 X1 X2 X3);  tauto.
Qed.

Remark rem_4768 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto__q1 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto.
  exact (rem_4767 X1 X2 X3).
Qed.

Remark rem_4769 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 nil -> auto__q1 X1 -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto__q1 nil -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4768 X1 X2 X3).
Qed.

Remark rem_4770 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X2 nil) -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_796 X2 nil H);  intros.
  apply (rem_4769 X1 X2 X3);  tauto.
Qed.

Remark rem_4771 : forall X1 X2 X3:term, auto__q1 (cons X1 (cons X2 nil)) -> auto__q1 (key sym (cons X3 (cons server nil))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_796 X1 (cons X2 nil) H);  intros.
  apply (rem_4770 X1 X2 X3);  tauto.
Qed.

Remark rem_4772 : forall X1 X2 X3:term, auto_knows_old (crypt (cons X1 (cons X2 nil)) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1). (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_1504 (cons X1 (cons X2 nil)) (key sym (cons X3 (cons server nil))) H);  intros.
  apply (rem_4612 X1 X2 X3);  tauto.
  apply (rem_4621 X1 X2 X3);  tauto.
  apply (rem_4680 X1 X2 X3);  tauto.
  apply (rem_4771 X1 X2 X3);  tauto.
Qed.

Remark rem_4773 : forall _big_a _big_b _big_kab:term, auto_knows_old (crypt (cons _big_kab (cons _big_a nil)) (key sym (cons _big_b (cons server nil)))) -> auto_knows_old (crypt (nonceb_old _big_kab _big_a _big_b) _big_kab). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X3 X1.
  cut (auto_knows_old (crypt (cons X1 (cons X2 nil)) (key sym (cons X3 (cons server nil)))) -> auto_knows_old (crypt (nonceb_old X1 X2 X3) X1)). tauto. exact (rem_4772 X1 X2 X3).
Qed.

Remark rem_4774 : (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_4775 : (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_4774 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_4776 : (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_3 H);  intros.
  apply (rem_4775 epsilon_magent_pknows_old);  tauto.
Defined.

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

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

Remark rem_4779 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1:term, auto__q1 X1 -> auto_knows_old (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1. intros A1.
  case (rem_4778 epsilon_magent_pknows_old X1 A1). clear  epsilon_magent_pknows_old A1. intros. apply trans_knows_old_s_1;  tauto.
 clear  epsilon_magent_pknows_old A1. tauto.
Defined.

Remark rem_4780 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1:term, auto_agent (s X1) -> auto_knows_old (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1. intro H. intros.
  elim (rem_8 X1 H);  intros.
  apply (rem_4779 epsilon_magent_pknows_old X1);  tauto.
Defined.

Remark rem_4781 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_4774 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_nil_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_4782 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent nil -> auto_knows_old nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_11 H);  intros.
  apply (rem_4781 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_4783 : (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_4774 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_4784 : (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_14 H);  intros.
  apply (rem_4783 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_4785 : (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_4774 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_4786 : (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_17 H);  intros.
  apply (rem_4785 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_4787 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_4774 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_prv_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_4788 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent prv -> auto_knows_old prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_20 H);  intros.
  apply (rem_4787 epsilon_magent_pknows_old);  tauto.
Defined.

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

Remark rem_4790 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4791 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X2:term, auto__q4 X2 -> auto__q4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4792 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4793 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_4790 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4792 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4794 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4793 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_4796 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4797 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X2:term, auto__q2 X2 -> auto__q2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4798 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4799 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_4796 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4798 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4800 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4799 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4801 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4802 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4803 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_4801 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4802 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4804 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4803 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

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

Remark rem_4806 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4807 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X2:term, auto__q3 X2 -> auto__q3 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4808 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4809 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_4806 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4808 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4810 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4809 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4811 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4812 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4813 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_4811 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4812 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4814 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4813 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4815 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4816 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4817 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_4815 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4816 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4818 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4817 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4819 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4820 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4821 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_4819 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4820 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4822 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4821 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4823 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4824 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4825 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_4823 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4824 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4826 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4825 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4827 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4828 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4829 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_4827 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4828 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4830 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4829 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4831 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4832 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X2:term, auto__q1 X2 -> auto__q1 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_4833 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4834 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_4831 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4833 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4835 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4834 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4836 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4837 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4838 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_4836 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4837 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4839 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4838 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_key_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4840 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto_agent (key X1 X2) -> auto_knows_old (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_73 X1 X2 H);  intros.
  apply (rem_4794 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4800 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4804 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4810 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4814 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4818 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4822 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4826 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4830 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4835 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4839 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_4841 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4842 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

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

Remark rem_4844 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4845 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4841 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4842 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4844 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4846 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4845 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4847 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4848 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

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

Remark rem_4850 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4851 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4847 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4848 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4850 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4852 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4851 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4853 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4854 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

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

Remark rem_4856 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4857 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4853 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4854 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4856 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4858 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4857 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4859 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4860 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

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

Remark rem_4862 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4863 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4859 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4860 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4862 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4864 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4863 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4865 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4866 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4867 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4868 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4865 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4866 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4867 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4869 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4868 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4870 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4871 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4872 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4873 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4870 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4871 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4872 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4874 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4873 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4875 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4876 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4877 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4878 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4875 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4876 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4877 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4879 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4878 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4880 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4881 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4882 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4883 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4880 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4881 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4882 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4884 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4883 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4885 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4886 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4887 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4888 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4885 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4886 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4887 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4889 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4888 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4890 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4891 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4892 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4893 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4890 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4891 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4892 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4894 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4893 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_session_current_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4895 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (session_current X1 X2 X3) -> auto_knows_old (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_129 X1 X2 X3 H);  intros.
  apply (rem_4846 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4852 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4858 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4864 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4869 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4874 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4879 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4884 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4889 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4894 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_4896 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4803 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4897 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4817 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4898 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4899 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4900 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_4898 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4899 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_4901 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4900 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4902 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4834 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4903 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto_knows_old (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_138 X1 X2 H);  intros.
  apply (rem_4896 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4897 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4901 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_4902 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_4904 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_knows_old pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old.  case (rem_4774 epsilon_magent_pknows_old). clear  epsilon_magent_pknows_old. intros. apply trans_knows_old_pub_1;  tauto.
 clear  epsilon_magent_pknows_old. tauto.
Defined.

Remark rem_4905 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> auto_agent pub -> auto_knows_old pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intro H. intros.
  elim (rem_141 H);  intros.
  apply (rem_4904 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_4906 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4834 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_cons_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_4907 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto_knows_old (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_144 X1 X2 H);  intros.
  apply (rem_4906 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_4908 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4909 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4910 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4911 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4908 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4909 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4910 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4912 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4911 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4913 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4914 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4915 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4916 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4913 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4914 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4915 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4917 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4916 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4918 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4845 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4919 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4920 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4921 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4922 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4919 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4920 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4921 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4923 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4922 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4924 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4925 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4926 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4927 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4924 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4925 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4926 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4928 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4927 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4929 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4930 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4931 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4932 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4929 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4930 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_4931 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4933 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4932 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4934 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4935 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4936 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4937 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4934 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_4935 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4936 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4938 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4937 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4939 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4940 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4941 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4942 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4939 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4940 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4941 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4943 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4942 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4944 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4945 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4946 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4947 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4944 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4945 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4946 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4948 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4947 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4949 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4950 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4951 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4952 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4949 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4950 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4951 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4953 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4952 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4954 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4851 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4955 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4956 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4957 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4958 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4955 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4956 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4957 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4959 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4958 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4960 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4857 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4961 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4962 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4963 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4964 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_4961 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4962 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4963 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4965 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4964 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4966 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4967 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4968 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4969 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4966 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4967 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4968 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4970 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4969 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4971 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4863 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4972 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4868 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4973 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4974 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4975 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4976 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4973 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4974 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4975 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4977 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4976 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4978 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4873 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4979 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4980 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4981 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4982 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_4979 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4980 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_4981 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4983 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4982 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4984 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4985 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4986 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4987 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_4984 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_4985 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4986 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4988 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4987 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4989 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4878 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4990 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4991 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4992 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4993 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4990 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_4991 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_4992 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4994 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4993 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_4995 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_4996 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_4997 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_4998 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_4995 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_4996 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_4997 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_4999 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4998 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5000 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5001 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5002 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5003 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5000 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5001 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5002 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5004 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5003 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5005 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5006 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5007 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5008 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5005 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5006 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5007 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5009 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5008 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5010 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5011 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5012 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5013 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5010 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5011 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5012 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5014 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5013 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5015 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5016 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5017 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5018 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5015 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5016 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5017 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5019 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5018 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_28;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5020 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5021 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5022 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5023 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5020 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5021 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5022 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5024 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5023 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_29;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5025 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5026 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5027 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5028 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5025 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5026 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5027 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5029 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5028 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_30;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5030 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5031 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5032 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5033 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5030 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5031 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5032 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5034 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5033 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_31;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5035 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4888 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_32;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5036 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4893 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_33;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5037 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5038 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5039 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5040 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5037 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5038 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5039 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5041 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5040 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_34;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5042 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5043 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5044 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5045 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5042 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5043 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5044 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5046 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5045 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_35;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5047 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5048 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5049 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5050 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5047 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5048 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5049 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5051 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5050 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_current_36;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5052 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_current X1 X2 X3) -> auto_knows_old (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_290 X1 X2 X3 H);  intros.
  apply (rem_4912 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4917 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4918 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4923 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4928 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4933 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4938 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4943 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4948 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4953 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4954 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4959 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4960 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4965 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4970 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4971 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4972 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4977 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4978 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4983 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4988 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4989 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4994 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_4999 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5004 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5009 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5014 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5019 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5024 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5029 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5034 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5035 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5036 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5041 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5046 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5051 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_5053 : (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_4774 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_5054 : (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_293 H);  intros.
  apply (rem_5053 epsilon_magent_pknows_old);  tauto.
Defined.

Remark rem_5055 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4911 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5056 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5057 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5058 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5059 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5056 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5057 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5058 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5060 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5059 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5061 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4845 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5062 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5063 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5064 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5065 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5062 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5063 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5064 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5066 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5065 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5067 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4922 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5068 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4932 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5069 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4937 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5070 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4942 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5071 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4947 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_9;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5072 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5073 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5074 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5075 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5072 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5073 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5074 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5076 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5075 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_10;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5077 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5078 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5079 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_4843 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5080 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5077 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5078 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5079 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5081 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5080 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_11;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5082 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4952 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_12;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5083 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5084 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5085 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5086 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5083 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5084 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5085 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5087 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5086 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_13;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5088 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5089 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5090 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5091 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5088 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5089 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5090 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5092 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5091 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_14;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5093 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5094 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5095 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5096 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5093 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5094 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5095 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5097 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5096 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_15;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5098 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4958 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_16;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5099 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4857 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_17;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5100 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4969 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_18;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5101 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4868 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_19;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5102 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4976 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_20;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5103 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_4777 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5104 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5105 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5106 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5103 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5104 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5105 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5107 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5106 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_21;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5108 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4873 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_22;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5109 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5110 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5111 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5112 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5109 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5110 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5111 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5113 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5112 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_23;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5114 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5115 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5116 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_4849 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5117 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5114 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5115 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5116 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5118 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5117 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_24;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5119 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4982 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_25;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5120 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5121 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5122 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5123 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5120 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5121 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5122 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5124 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5123 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_26;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5125 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4987 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_27;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5126 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5127 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_4807 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5128 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5129 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5126 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5127 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5128 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5130 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5129 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_28;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5131 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4883 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_29;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5132 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4993 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_30;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5133 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4998 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_31;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5134 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5135 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_4797 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5136 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5137 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5134 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5135 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5136 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5138 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5137 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_32;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5139 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5140 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_4791 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5141 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_4861 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5142 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5139 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5140 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5141 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5143 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5142 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_33;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5144 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5008 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_34;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5145 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5013 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_35;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5146 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5018 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_36;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5147 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5023 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_37;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5148 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5028 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_38;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5149 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5033 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_39;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5150 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4888 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_40;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5151 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_4893 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_41;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5152 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5040 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_42;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5153 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5154 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5155 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_4855 epsilon_magent_pknows_old X3).
Defined.

Remark rem_5156 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5153 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5154 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5155 epsilon_magent_pknows_old X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5157 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5156 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_43;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5158 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5045 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_44;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5159 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_old (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5050 epsilon_magent_pknows_old X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_old A1 A2 A3. intros. apply trans_knows_old_nonceb_old_45;  tauto.
 clear  epsilon_magent_pknows_old A1 A2 A3. tauto.
Defined.

Remark rem_5160 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_old X1 X2 X3) -> auto_knows_old (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2 X3. intro H. intros.
  elim (rem_400 X1 X2 X3 H);  intros.
  apply (rem_5055 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5060 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5061 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5066 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5067 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5068 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5069 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5070 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5071 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5076 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5081 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5082 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5087 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5092 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5097 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5098 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5099 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5100 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5101 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5102 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5107 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5108 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5113 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5118 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5119 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5124 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5125 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5130 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5131 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5132 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5133 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5138 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5143 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5144 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5145 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5146 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5147 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5148 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5149 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5150 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5151 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5152 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5157 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5158 epsilon_magent_pknows_old X1 X2 X3);  tauto.
  apply (rem_5159 epsilon_magent_pknows_old X1 X2 X3);  tauto.
Defined.

Remark rem_5161 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4799 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_1;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5162 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4809 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_2;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5163 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_4789 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5164 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5165 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_5163 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5164 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5166 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_5165 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_3;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5167 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_4805 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5168 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5169 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_5167 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5168 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5170 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_5169 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_4;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5171 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4900 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_5;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5172 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_4795 epsilon_magent_pknows_old X1).
Defined.

Remark rem_5173 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_4832 epsilon_magent_pknows_old X2).
Defined.

Remark rem_5174 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_5172 epsilon_magent_pknows_old X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5173 epsilon_magent_pknows_old X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5175 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_5174 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_6;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5176 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4834 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_7;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5177 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_old (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intros A1 A2.
  case (rem_4838 epsilon_magent_pknows_old X1 X2 A1 A2). clear  epsilon_magent_pknows_old A1 A2. intros. apply trans_knows_old_noncea_old_8;  tauto.
 clear  epsilon_magent_pknows_old A1 A2. tauto.
Defined.

Remark rem_5178 : (forall X:term, auto_agent X -> auto_knows_old X)
    -> forall X1 X2:term, auto_agent (noncea_old X1 X2) -> auto_knows_old (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_old. intros X1 X2. intro H. intros.
  elim (rem_419 X1 X2 H);  intros.
  apply (rem_5161 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5162 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5166 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5170 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5171 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5175 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5176 epsilon_magent_pknows_old X1 X2);  tauto.
  apply (rem_5177 epsilon_magent_pknows_old X1 X2);  tauto.
Defined.

Remark rem_5179 : forall X1:term, auto_agent X1 -> auto_knows_old X1. (* Induct. *)
Proof.
  fix epsilon_magent_pknows_old 1.
  intro X. case X.
  exact (rem_5054 epsilon_magent_pknows_old ).
  exact (rem_4786 epsilon_magent_pknows_old ).
  intros X1 X2;  exact (rem_4907 epsilon_magent_pknows_old X1 X2).
  intros X1 X2;  exact (rem_4903 epsilon_magent_pknows_old X1 X2).
  exact (rem_4784 epsilon_magent_pknows_old ).
  intros X1 X2;  exact (rem_4840 epsilon_magent_pknows_old X1 X2).
  exact (rem_4782 epsilon_magent_pknows_old ).
  intros X1 X2. intro H. elim (rem_421 X1 X2 H).
  intros X1 X2;  exact (rem_5178 epsilon_magent_pknows_old X1 X2).
  intros X1 X2 X3;  exact (rem_5052 epsilon_magent_pknows_old X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5160 epsilon_magent_pknows_old X1 X2 X3).
  exact (rem_4788 epsilon_magent_pknows_old ).
  exact (rem_4905 epsilon_magent_pknows_old ).
  intros X1;  exact (rem_4780 epsilon_magent_pknows_old X1).
  exact (rem_4776 epsilon_magent_pknows_old ).
  intros X1 X2 X3;  exact (rem_4895 epsilon_magent_pknows_old X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_423 X1 X2 X3 H).
   intro H. elim (rem_422  H).
Qed.

Remark rem_5180 : forall X:term, auto_agent X -> auto_knows_old X. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto_agent X1 -> auto_knows_old X1). tauto. exact (rem_5179 X1).
Qed.

Remark rem_5181 : forall X1 X2:term, auto__q1 X1 -> auto__q4 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_5182 : forall X1 X2:term, auto__q1 X1 -> auto__q2 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_5183 : auto__q3 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2917 H);  intros.
Qed.

Remark rem_5184 : forall X1:term, auto__q1 X1 -> auto__q3 prv -> auto_knows_old (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 prv -> False). tauto.
  exact (rem_5183).
Qed.

Remark rem_5185 : forall X1:term, auto__q3 prv -> auto__q1 X1 -> auto_knows_old (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q3 prv -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_5184 X1).
Qed.

Remark rem_5186 : auto__q4 prv -> False. (* Eliminate negative atom. *)
Proof.
  intro H. intros.
  elim (rem_2381 H);  intros.
Qed.

Remark rem_5187 : forall X1:term, auto__q1 X1 -> auto__q4 prv -> auto_knows_old (key pub X1) -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 prv -> False). tauto.
  exact (rem_5186).
Qed.

Remark rem_5188 : forall X1:term, auto__q4 prv -> auto__q1 X1 -> auto_knows_old (key pub X1) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q1 X1 -> auto__q4 prv -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_5187 X1).
Qed.

Remark rem_5189 : forall X1:term, auto__q2 (key prv X1) -> auto_knows_old (key pub X1) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_455 prv X1 H);  intros.
  apply (rem_5185 X1);  tauto.
  apply (rem_5188 X1);  tauto.
Qed.

Remark rem_5190 : forall X2:term, auto__q2 (key prv X2) -> auto_knows_old (key pub X2) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 (key prv X1) -> auto_knows_old (key pub X1) -> False). tauto. exact (rem_5189 X1).
Qed.

Remark rem_5191 : forall X1 X2:term, auto__q2 X1 -> auto__q2 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q2 (key prv X2) -> auto_knows_old (key pub X2) -> False). tauto.
  exact (rem_5190 X2).
Qed.

Remark rem_5192 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (key prv X2) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X1 -> auto_knows_old X1). tauto. exact (rem_3355 X1).
Qed.

Remark rem_5193 : forall X1 X2:term, auto_knows_old (crypt X1 (key prv X2)) -> auto_knows_old (key pub X2) -> auto_knows_old X1. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intro H. intros.
  elim (rem_1504 X1 (key prv X2) H);  intros.
  apply (rem_5181 X1 X2);  tauto.
  apply (rem_5182 X1 X2);  tauto.
  apply (rem_5191 X1 X2);  tauto.
  apply (rem_5192 X1 X2);  tauto.
Qed.

Remark rem_5194 : 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. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_old (crypt X1 (key prv X2)) -> auto_knows_old (key pub X2) -> auto_knows_old X1). tauto. exact (rem_5193 X1 X2).
Qed.

Remark rem_5195 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> True \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1.  tauto.
Defined.

Remark rem_5196 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 server. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_server_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

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

Remark rem_5198 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old server -> auto__q1 server. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5197 H);  intros.
  apply (rem_5196 epsilon_mknows_old_p_q1);  tauto.
Defined.

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

Remark rem_5200 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 X1 \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1. intros A1.
  cut (auto__q1 X1). 2:apply (rem_5199 epsilon_mknows_old_p_q1 X1);  assumption.
  tauto.
Defined.

Remark rem_5201 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto__q1 X1 -> auto__q1 (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1. intros A1.
  case (rem_5200 epsilon_mknows_old_p_q1 X1 A1). clear  epsilon_mknows_old_p_q1 A1. intros. apply trans__q1_s_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1. tauto.
Defined.

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

Remark rem_5203 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto_knows_old (s X1) -> auto__q1 (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1. intro H. intros.
  elim (rem_5202 X1 H);  intros.
  apply (rem_5201 epsilon_mknows_old_p_q1 X1);  tauto.
Defined.

Remark rem_5204 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_nil_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

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

Remark rem_5206 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old nil -> auto__q1 nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5205 H);  intros.
  apply (rem_5204 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5207 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 i. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_i_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

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

Remark rem_5209 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old i -> auto__q1 i. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5208 H);  intros.
  apply (rem_5207 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5210 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 bob. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_bob_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

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

Remark rem_5212 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old bob -> auto__q1 bob. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5211 H);  intros.
  apply (rem_5210 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5213 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_prv_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

Remark rem_5214 : auto_knows_old prv -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5215 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old prv -> auto__q1 prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5214 H);  intros.
  apply (rem_5213 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5216 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto__q3 X1 -> auto__q3 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5217 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5218 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X2:term, auto__q4 X2 -> auto__q4 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5219 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5220 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_5217 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5219 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5221 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5220 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5222 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto__q4 X1 -> auto__q4 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5223 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5224 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X2:term, auto__q2 X2 -> auto__q2 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5225 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5226 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_5223 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5225 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5227 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5226 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5228 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5229 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5230 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_5228 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5229 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5231 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5230 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5232 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1:term, auto__q2 X1 -> auto__q2 X1. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5233 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5234 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X2:term, auto__q3 X2 -> auto__q3 X2. (* Tautology. *)
Proof. intro H. clear H. tauto. Defined.

Remark rem_5235 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5236 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_5233 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5235 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5237 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5236 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5238 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5239 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5240 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_5238 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5239 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5241 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5240 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_5;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5242 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5243 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5244 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_5242 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5243 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5245 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5244 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_6;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5246 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5247 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5248 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_5246 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5247 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5249 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5248 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_7;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5250 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5251 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5252 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_5250 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5251 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5253 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5252 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_8;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5254 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5255 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5256 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_5254 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5255 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5257 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5256 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_9;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5258 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

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

Remark rem_5260 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5261 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_5258 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5260 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5262 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5261 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_10;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5263 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5264 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5265 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_5263 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5264 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5266 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5265 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_key_11;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5267 : forall X1 X2:term, auto_knows_old (key X1 X2) -> or_11
    (auto__q3 X1 /\ auto__q4 X2)
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q4 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q2 X2)
    (auto__q1 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q3 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_11_intro_1; tauto.
  intros. apply or_11_intro_2; tauto.
  intros. apply or_11_intro_3; tauto.
  intros. apply or_11_intro_4; tauto.
  intros. apply or_11_intro_5; tauto.
  intros. apply or_11_intro_6; tauto.
  intros. apply or_11_intro_7; tauto.
  intros. apply or_11_intro_8; tauto.
  intros. apply or_11_intro_9; tauto.
  intros. apply or_11_intro_10; tauto.
  intros. apply or_11_intro_11; tauto.
Qed.

Remark rem_5268 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto_knows_old (key X1 X2) -> auto__q1 (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intro H. intros.
  elim (rem_5267 X1 X2 H);  intros.
  apply (rem_5221 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5227 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5231 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5237 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5241 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5245 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5249 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5253 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5257 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5262 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5266 epsilon_mknows_old_p_q1 X1 X2);  tauto.
Defined.

Remark rem_5269 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5270 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

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

Remark rem_5272 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5273 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5269 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5270 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5272 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5274 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5273 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5275 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5276 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

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

Remark rem_5278 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5279 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5275 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5276 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5278 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5280 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5279 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5281 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5282 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

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

Remark rem_5284 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5285 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5281 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5282 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5284 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5286 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5285 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5287 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5288 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

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

Remark rem_5290 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5291 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5287 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5288 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5290 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5292 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5291 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5293 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5294 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5295 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5296 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5293 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5294 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5295 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5297 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5296 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_5;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5298 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5299 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5300 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5301 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5298 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5299 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5300 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5302 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5301 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_6;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5303 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5304 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5305 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5306 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5303 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5304 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5305 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5307 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5306 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_7;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5308 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5309 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5310 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5311 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5308 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5309 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5310 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5312 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5311 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_8;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5313 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5314 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5315 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5316 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5313 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5314 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5315 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5317 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5316 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_9;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5318 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5319 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5320 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5321 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5318 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5319 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5320 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5322 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5321 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_session_current_10;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5323 : forall X1 X2 X3:term, auto_knows_old (session_current X1 X2 X3) -> or_10
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_10_intro_1; tauto.
  intros. apply or_10_intro_2; tauto.
  intros. apply or_10_intro_3; tauto.
  intros. apply or_10_intro_4; tauto.
  intros. apply or_10_intro_5; tauto.
  intros. apply or_10_intro_6; tauto.
  intros. apply or_10_intro_7; tauto.
  intros. apply or_10_intro_8; tauto.
  intros. apply or_10_intro_9; tauto.
  intros. apply or_10_intro_10; tauto.
Qed.

Remark rem_5324 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_knows_old (session_current X1 X2 X3) -> auto__q1 (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_5323 X1 X2 X3 H);  intros.
  apply (rem_5274 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5280 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5286 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5292 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5297 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5302 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5307 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5312 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5317 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5322 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_5325 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5230 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_crypt_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5326 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5244 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_crypt_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5327 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5328 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5329 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_5327 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5328 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5330 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5329 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_crypt_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5331 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5261 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_crypt_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5332 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto_knows_old (crypt X1 X2) -> auto__q1 (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intro H. intros.
  elim (rem_1504 X1 X2 H);  intros.
  apply (rem_5325 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5326 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5330 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5331 epsilon_mknows_old_p_q1 X1 X2);  tauto.
Defined.

Remark rem_5333 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_pub_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

Remark rem_5334 : auto_knows_old pub -> or_1
    True.
Proof.
  intros. inversion H.
  intros. apply or_1_intro_1; tauto.
Qed.

Remark rem_5335 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old pub -> auto__q1 pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5334 H);  intros.
  apply (rem_5333 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5336 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5261 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_cons_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

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

Remark rem_5338 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto_knows_old (cons X1 X2) -> auto__q1 (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intro H. intros.
  elim (rem_5337 X1 X2 H);  intros.
  apply (rem_5336 epsilon_mknows_old_p_q1 X1 X2);  tauto.
Defined.

Remark rem_5339 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5340 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5341 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5342 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5339 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5340 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5341 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5343 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5342 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5344 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5345 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5346 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5347 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5344 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5345 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5346 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5348 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5347 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5349 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5273 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5350 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5351 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5352 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5353 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5350 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5351 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5352 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5354 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5353 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5355 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5356 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5357 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5358 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5355 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5356 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5357 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5359 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5358 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_5;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5360 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5361 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5362 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5363 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5360 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5361 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5362 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5364 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5363 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_6;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5365 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5366 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5367 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5368 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5365 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5366 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5367 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5369 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5368 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_7;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5370 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5371 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5372 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5373 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5370 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5371 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5372 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5374 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5373 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_8;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5375 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5376 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5377 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5378 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5375 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5376 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5377 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5379 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5378 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_9;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5380 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5381 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5382 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5383 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5380 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5381 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5382 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5384 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5383 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_10;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5385 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5279 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_11;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5386 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5387 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5388 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5389 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5386 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5387 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5388 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5390 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5389 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_12;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5391 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5285 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_13;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5392 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5393 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5394 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5395 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5392 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5393 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5394 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5396 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5395 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_14;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5397 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5398 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5399 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5400 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5397 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5398 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5399 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5401 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5400 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_15;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5402 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5291 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_16;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5403 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5296 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_17;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5404 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5405 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5406 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5407 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5404 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5405 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5406 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5408 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5407 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_18;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5409 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5301 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_19;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5410 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5411 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5412 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5413 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5410 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5411 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5412 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5414 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5413 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_20;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5415 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5416 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5417 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5418 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5415 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5416 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5417 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5419 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5418 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_21;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5420 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5306 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_22;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5421 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5422 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5423 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5424 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5421 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5422 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5423 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5425 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5424 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_23;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5426 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5427 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5428 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5429 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5426 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5427 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5428 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5430 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5429 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_24;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5431 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5432 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5433 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5434 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5431 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5432 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5433 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5435 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5434 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_25;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5436 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5437 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5438 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5439 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5436 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5437 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5438 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5440 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5439 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_26;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5441 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5442 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5443 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5444 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5441 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5442 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5443 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5445 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5444 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_27;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5446 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5447 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5448 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5449 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5446 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5447 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5448 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5450 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5449 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_28;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5451 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5452 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5453 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5454 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5451 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5452 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5453 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5455 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5454 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_29;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5456 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5457 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5458 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5459 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5456 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5457 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5458 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5460 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5459 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_30;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5461 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5462 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5463 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5464 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5461 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5462 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5463 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5465 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5464 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_31;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5466 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5316 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_32;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5467 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5321 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_33;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5468 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5469 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5470 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5471 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5468 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5469 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5470 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5472 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5471 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_34;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5473 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5474 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5475 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5476 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5473 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5474 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5475 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5477 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5476 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_35;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5478 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5479 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5480 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5481 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5478 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5479 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5480 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5482 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5481 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_current_36;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5483 : forall X1 X2 X3:term, auto_knows_old (nonceb_current X1 X2 X3) -> or_36
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_36_intro_1; tauto.
  intros. apply or_36_intro_2; tauto.
  intros. apply or_36_intro_3; tauto.
  intros. apply or_36_intro_4; tauto.
  intros. apply or_36_intro_5; tauto.
  intros. apply or_36_intro_6; tauto.
  intros. apply or_36_intro_7; tauto.
  intros. apply or_36_intro_8; tauto.
  intros. apply or_36_intro_9; tauto.
  intros. apply or_36_intro_10; tauto.
  intros. apply or_36_intro_11; tauto.
  intros. apply or_36_intro_12; tauto.
  intros. apply or_36_intro_13; tauto.
  intros. apply or_36_intro_14; tauto.
  intros. apply or_36_intro_15; tauto.
  intros. apply or_36_intro_16; tauto.
  intros. apply or_36_intro_17; tauto.
  intros. apply or_36_intro_18; tauto.
  intros. apply or_36_intro_19; tauto.
  intros. apply or_36_intro_20; tauto.
  intros. apply or_36_intro_21; tauto.
  intros. apply or_36_intro_22; tauto.
  intros. apply or_36_intro_23; tauto.
  intros. apply or_36_intro_24; tauto.
  intros. apply or_36_intro_25; tauto.
  intros. apply or_36_intro_26; tauto.
  intros. apply or_36_intro_27; tauto.
  intros. apply or_36_intro_28; tauto.
  intros. apply or_36_intro_29; tauto.
  intros. apply or_36_intro_30; tauto.
  intros. apply or_36_intro_31; tauto.
  intros. apply or_36_intro_32; tauto.
  intros. apply or_36_intro_33; tauto.
  intros. apply or_36_intro_34; tauto.
  intros. apply or_36_intro_35; tauto.
  intros. apply or_36_intro_36; tauto.
Qed.

Remark rem_5484 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_current X1 X2 X3) -> auto__q1 (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_5483 X1 X2 X3 H);  intros.
  apply (rem_5343 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5348 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5349 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5354 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5359 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5364 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5369 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5374 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5379 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5384 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5385 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5390 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5391 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5396 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5401 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5402 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5403 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5408 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5409 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5414 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5419 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5420 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5425 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5430 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5435 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5440 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5445 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5450 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5455 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5460 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5465 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5466 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5467 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5472 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5477 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5482 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_5485 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto__q1 alice. (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1.  case (rem_5195 epsilon_mknows_old_p_q1). clear  epsilon_mknows_old_p_q1. intros. apply trans__q1_alice_1;  tauto.
 clear  epsilon_mknows_old_p_q1. tauto.
Defined.

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

Remark rem_5487 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> auto_knows_old alice -> auto__q1 alice. (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intro H. intros.
  elim (rem_5486 H);  intros.
  apply (rem_5485 epsilon_mknows_old_p_q1);  tauto.
Defined.

Remark rem_5488 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5342 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5489 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5490 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5491 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5492 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5489 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5490 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5491 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5493 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5492 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5494 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5273 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5495 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5496 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5497 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5498 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5495 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5496 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5497 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5499 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5498 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5500 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5353 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_5;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5501 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5363 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_6;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5502 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5368 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_7;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5503 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5373 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_8;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5504 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5378 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_9;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5505 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5506 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5507 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5508 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5505 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5506 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5507 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5509 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5508 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_10;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5510 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5511 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5512 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_5271 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5513 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5510 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5511 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_5512 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5514 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5513 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_11;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5515 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5383 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_12;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5516 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5517 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5518 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5519 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5516 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5517 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5518 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5520 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5519 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_13;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5521 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5522 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5523 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5524 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5521 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5522 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5523 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5525 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5524 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_14;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5526 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5527 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5528 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5529 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5526 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5527 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5528 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5530 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5529 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_15;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5531 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5389 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_16;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5532 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5285 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_17;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5533 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5400 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_18;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5534 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5296 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_19;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5535 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5407 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_20;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5536 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_5199 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5537 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5538 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5539 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5536 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5537 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5538 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5540 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5539 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_21;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5541 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5301 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_22;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5542 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5543 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5544 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5545 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5542 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5543 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5544 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5546 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5545 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_23;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5547 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5548 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5549 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_5277 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5550 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_5547 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5548 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_5549 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5551 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5550 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_24;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5552 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5413 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_25;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5553 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5554 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5555 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5556 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5553 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5554 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5555 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5557 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5556 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_26;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5558 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5418 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_27;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5559 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5560 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_5234 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5561 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5562 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5559 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5560 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5561 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5563 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5562 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_28;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5564 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5311 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_29;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5565 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5424 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_30;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5566 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5429 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_31;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5567 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5568 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_5224 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5569 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5570 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5567 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5568 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5569 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5571 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5570 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_32;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5572 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5573 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_5218 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5574 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_5289 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5575 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_5572 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5573 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_5574 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5576 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5575 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_33;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5577 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5439 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_34;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5578 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5444 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_35;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5579 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5449 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_36;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5580 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5454 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_37;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5581 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5459 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_38;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5582 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5464 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_39;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5583 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5316 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_40;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5584 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5321 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_41;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5585 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5471 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_42;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5586 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5587 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5588 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_5283 epsilon_mknows_old_p_q1 X3).
Defined.

Remark rem_5589 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_5586 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5587 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_5588 epsilon_mknows_old_p_q1 X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_5590 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5589 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_43;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5591 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5476 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_44;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5592 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5481 epsilon_mknows_old_p_q1 X1 X2 X3 A1 A2 A3). clear  epsilon_mknows_old_p_q1 A1 A2 A3. intros. apply trans__q1_nonceb_old_45;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2 A3. tauto.
Defined.

Remark rem_5593 : forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> or_45
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3)
    (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3)
    (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3)
    (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3)
    (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3)
    (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3)
    (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3)
    (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3)
.
Proof.
  intros. inversion H.
  intros. apply or_45_intro_1; tauto.
  intros. apply or_45_intro_2; tauto.
  intros. apply or_45_intro_3; tauto.
  intros. apply or_45_intro_4; tauto.
  intros. apply or_45_intro_5; tauto.
  intros. apply or_45_intro_6; tauto.
  intros. apply or_45_intro_7; tauto.
  intros. apply or_45_intro_8; tauto.
  intros. apply or_45_intro_9; tauto.
  intros. apply or_45_intro_10; tauto.
  intros. apply or_45_intro_11; tauto.
  intros. apply or_45_intro_12; tauto.
  intros. apply or_45_intro_13; tauto.
  intros. apply or_45_intro_14; tauto.
  intros. apply or_45_intro_15; tauto.
  intros. apply or_45_intro_16; tauto.
  intros. apply or_45_intro_17; tauto.
  intros. apply or_45_intro_18; tauto.
  intros. apply or_45_intro_19; tauto.
  intros. apply or_45_intro_20; tauto.
  intros. apply or_45_intro_21; tauto.
  intros. apply or_45_intro_22; tauto.
  intros. apply or_45_intro_23; tauto.
  intros. apply or_45_intro_24; tauto.
  intros. apply or_45_intro_25; tauto.
  intros. apply or_45_intro_26; tauto.
  intros. apply or_45_intro_27; tauto.
  intros. apply or_45_intro_28; tauto.
  intros. apply or_45_intro_29; tauto.
  intros. apply or_45_intro_30; tauto.
  intros. apply or_45_intro_31; tauto.
  intros. apply or_45_intro_32; tauto.
  intros. apply or_45_intro_33; tauto.
  intros. apply or_45_intro_34; tauto.
  intros. apply or_45_intro_35; tauto.
  intros. apply or_45_intro_36; tauto.
  intros. apply or_45_intro_37; tauto.
  intros. apply or_45_intro_38; tauto.
  intros. apply or_45_intro_39; tauto.
  intros. apply or_45_intro_40; tauto.
  intros. apply or_45_intro_41; tauto.
  intros. apply or_45_intro_42; tauto.
  intros. apply or_45_intro_43; tauto.
  intros. apply or_45_intro_44; tauto.
  intros. apply or_45_intro_45; tauto.
Qed.

Remark rem_5594 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2 X3:term, auto_knows_old (nonceb_old X1 X2 X3) -> auto__q1 (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2 X3. intro H. intros.
  elim (rem_5593 X1 X2 X3 H);  intros.
  apply (rem_5488 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5493 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5494 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5499 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5500 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5501 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5502 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5503 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5504 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5509 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5514 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5515 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5520 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5525 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5530 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5531 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5532 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5533 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5534 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5535 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5540 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5541 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5546 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5551 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5552 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5557 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5558 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5563 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5564 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5565 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5566 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5571 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5576 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5577 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5578 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5579 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5580 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5581 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5582 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5583 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5584 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5585 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5590 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5591 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
  apply (rem_5592 epsilon_mknows_old_p_q1 X1 X2 X3);  tauto.
Defined.

Remark rem_5595 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5226 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_1;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5596 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5236 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_2;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5597 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_5216 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5598 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5599 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_5597 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5598 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5600 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5599 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_3;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5601 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_5232 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5602 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5603 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_5601 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5602 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5604 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5603 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_4;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5605 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5329 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_5;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5606 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_5222 epsilon_mknows_old_p_q1 X1).
Defined.

Remark rem_5607 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_5259 epsilon_mknows_old_p_q1 X2).
Defined.

Remark rem_5608 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_5606 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5607 epsilon_mknows_old_p_q1 X1 X2);  assumption.
  tauto.
Defined.

Remark rem_5609 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5608 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_6;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5610 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5261 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_7;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5611 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intros A1 A2.
  case (rem_5265 epsilon_mknows_old_p_q1 X1 X2 A1 A2). clear  epsilon_mknows_old_p_q1 A1 A2. intros. apply trans__q1_noncea_old_8;  tauto.
 clear  epsilon_mknows_old_p_q1 A1 A2. tauto.
Defined.

Remark rem_5612 : forall X1 X2:term, auto_knows_old (noncea_old X1 X2) -> or_8
    (auto__q4 X1 /\ auto__q2 X2)
    (auto__q2 X1 /\ auto__q3 X2)
    (auto__q3 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q1 X2)
    (auto__q2 X1 /\ auto__q2 X2)
    (auto__q4 X1 /\ auto__q1 X2)
    (auto__q1 X1 /\ auto__q1 X2)
    (auto__q4 X1 /\ auto__q4 X2)
.
Proof.
  intros. inversion H.
  intros. apply or_8_intro_1; tauto.
  intros. apply or_8_intro_2; tauto.
  intros. apply or_8_intro_3; tauto.
  intros. apply or_8_intro_4; tauto.
  intros. apply or_8_intro_5; tauto.
  intros. apply or_8_intro_6; tauto.
  intros. apply or_8_intro_7; tauto.
  intros. apply or_8_intro_8; tauto.
Qed.

Remark rem_5613 : (forall X:term, auto_knows_old X -> auto__q1 X)
    -> forall X1 X2:term, auto_knows_old (noncea_old X1 X2) -> auto__q1 (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_mknows_old_p_q1. intros X1 X2. intro H. intros.
  elim (rem_5612 X1 X2 H);  intros.
  apply (rem_5595 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5596 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5600 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5604 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5605 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5609 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5610 epsilon_mknows_old_p_q1 X1 X2);  tauto.
  apply (rem_5611 epsilon_mknows_old_p_q1 X1 X2);  tauto.
Defined.

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

Remark rem_5615 : auto_knows_old sym -> or_0.
Proof.
  intros. inversion H.
Qed.

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

Remark rem_5617 : forall X1:term, auto_knows_old X1 -> auto__q1 X1. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p_q1 1.
  intro X. case X.
  exact (rem_5487 epsilon_mknows_old_p_q1 ).
  exact (rem_5212 epsilon_mknows_old_p_q1 ).
  intros X1 X2;  exact (rem_5338 epsilon_mknows_old_p_q1 X1 X2).
  intros X1 X2;  exact (rem_5332 epsilon_mknows_old_p_q1 X1 X2).
  exact (rem_5209 epsilon_mknows_old_p_q1 ).
  intros X1 X2;  exact (rem_5268 epsilon_mknows_old_p_q1 X1 X2).
  exact (rem_5206 epsilon_mknows_old_p_q1 ).
  intros X1 X2. intro H. elim (rem_5614 X1 X2 H).
  intros X1 X2;  exact (rem_5613 epsilon_mknows_old_p_q1 X1 X2).
  intros X1 X2 X3;  exact (rem_5484 epsilon_mknows_old_p_q1 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5594 epsilon_mknows_old_p_q1 X1 X2 X3).
  exact (rem_5215 epsilon_mknows_old_p_q1 ).
  exact (rem_5335 epsilon_mknows_old_p_q1 ).
  intros X1;  exact (rem_5203 epsilon_mknows_old_p_q1 X1).
  exact (rem_5198 epsilon_mknows_old_p_q1 ).
  intros X1 X2 X3;  exact (rem_5324 epsilon_mknows_old_p_q1 X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_5616 X1 X2 X3 H).
   intro H. elim (rem_5615  H).
Qed.

Remark rem_5618 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X1 -> auto__q1 X1). tauto. exact (rem_5617 X1).
Qed.

Remark rem_5619 : forall X2:term, auto_knows_old X2 -> auto__q1 X2. (* Induct. *)
Proof.
  fix epsilon_mknows_old_p_q1 1.
  intro X. case X.
  exact (rem_5487 epsilon_mknows_old_p_q1 ).
  exact (rem_5212 epsilon_mknows_old_p_q1 ).
  intros X1 X2;  exact (rem_5338 epsilon_mknows_old_p_q1 X1 X2).
  intros X1 X2;  exact (rem_5332 epsilon_mknows_old_p_q1 X1 X2).
  exact (rem_5209 epsilon_mknows_old_p_q1 ).
  intros X1 X2;  exact (rem_5268 epsilon_mknows_old_p_q1 X1 X2).
  exact (rem_5206 epsilon_mknows_old_p_q1 ).
  intros X1 X2. intro H. elim (rem_5614 X1 X2 H).
  intros X1 X2;  exact (rem_5613 epsilon_mknows_old_p_q1 X1 X2).
  intros X1 X2 X3;  exact (rem_5484 epsilon_mknows_old_p_q1 X1 X2 X3).
  intros X1 X2 X3;  exact (rem_5594 epsilon_mknows_old_p_q1 X1 X2 X3).
  exact (rem_5215 epsilon_mknows_old_p_q1 ).
  exact (rem_5335 epsilon_mknows_old_p_q1 ).
  intros X1;  exact (rem_5203 epsilon_mknows_old_p_q1 X1).
  exact (rem_5198 epsilon_mknows_old_p_q1 ).
  intros X1 X2 X3;  exact (rem_5324 epsilon_mknows_old_p_q1 X1 X2 X3).
  intros X1 X2 X3. intro H. elim (rem_5616 X1 X2 X3 H).
   intro H. elim (rem_5615  H).
Qed.

Remark rem_5620 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto_knows_old X2 -> auto__q1 X2). tauto. exact (rem_5619 X2).
Qed.

Remark rem_5621 : forall X1 X2:term, auto_knows_old X2 -> auto_knows_old X1 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_5618 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5620 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5622 : 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_5621 X1 X2 A1 A2). clear  A1 A2. intros. apply trans_knows_old_crypt_4;  tauto.
 clear  A1 A2. tauto.
Qed.

Remark rem_5623 : forall _big_k _big_m:term, auto_knows_old _big_m -> auto_knows_old _big_k -> auto_knows_old (crypt _big_m _big_k). (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_old X2 -> auto_knows_old X1 -> auto_knows_old (crypt X1 X2)). tauto. exact (rem_5622 X1 X2).
Qed.

Remark rem_5624 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1595 X3)). tauto.
Qed.

Remark rem_5625 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5624 X1 X2 X3 X4).
Qed.

Remark rem_5626 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_5627 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5626 X1 X2 X3 X4).
Qed.

Remark rem_5628 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_5629 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5628 X1 X2 X3 X4).
Qed.

Remark rem_5630 : forall X1:term, auto__q3 X1 -> auto__q4 nil -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 nil -> False). tauto.
  exact (rem_4721).
Qed.

Remark rem_5631 : forall X1:term, auto__q2 nil -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q2 nil -> False). tauto.
  exact (rem_4698).
Qed.

Remark rem_5632 : forall X1:term, auto__q4 X1 -> auto__q2 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q2 nil -> auto__q4 X1 -> False). tauto. exact (rem_5631 X1).
Qed.

Remark rem_5633 : forall X1:term, auto__q1 X1 -> auto__q4 nil -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 nil -> False). tauto.
  exact (rem_4721).
Qed.

Remark rem_5634 : forall X1:term, auto__q2 X1 -> auto__q4 nil -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 nil -> False). tauto.
  exact (rem_4721).
Qed.

Remark rem_5635 : forall X1:term, auto__q3 nil -> auto__q4 X1 -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q3 nil -> False). tauto.
  exact (rem_4727).
Qed.

Remark rem_5636 : forall X1:term, auto__q4 X1 -> auto__q3 nil -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 nil -> auto__q4 X1 -> False). tauto. exact (rem_5635 X1).
Qed.

Remark rem_5637 : forall X1:term, auto__q4 X1 -> auto__q4 nil -> False. (* Split. *)
Proof.
  intros X1.
  cut (auto__q4 nil -> False). tauto.
  exact (rem_4721).
Qed.

Remark rem_5638 : forall X1:term, auto__q3 (cons X1 nil) -> False. (* Eliminate negative atom. *)
Proof.
  intros X1. intro H. intros.
  elim (rem_2676 X1 nil H);  intros.
  apply (rem_5630 X1);  tauto.
  apply (rem_5632 X1);  tauto.
  apply (rem_5633 X1);  tauto.
  apply (rem_5634 X1);  tauto.
  apply (rem_5636 X1);  tauto.
  apply (rem_5637 X1);  tauto.
Qed.

Remark rem_5639 : forall X3:term, auto__q3 (cons X3 nil) -> False. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1.
  cut (auto__q3 (cons X1 nil) -> False). tauto. exact (rem_5638 X1).
Qed.

Remark rem_5640 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons X3 nil) -> False). tauto.
  exact (rem_5639 X3).
Qed.

Remark rem_5641 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5640 X1 X2 X3).
Qed.

Remark rem_5642 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5643 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_5644 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5642 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5643 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5645 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5644 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_5646 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_5645 X1 X2 X3).
Qed.

Remark rem_5647 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5648 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_5649 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5647 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5648 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5650 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5649 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_5651 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_5650 X1 X2 X3).
Qed.

Remark rem_5652 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons X3 nil) -> False). tauto.
  exact (rem_5639 X3).
Qed.

Remark rem_5653 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5652 X1 X2 X3).
Qed.

Remark rem_5654 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5655 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_5656 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5654 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5655 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5657 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5656 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_5658 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5657 X1 X2 X3).
Qed.

Remark rem_5659 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5660 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_5661 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_5659 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5660 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5662 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_5661 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_3;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_5663 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_5662 X1 X2 X3).
Qed.

Remark rem_5664 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2013 X2 (cons X3 nil) H);  intros.
  apply (rem_5641 X1 X2 X3);  tauto.
  apply (rem_5646 X1 X2 X3);  tauto.
  apply (rem_5651 X1 X2 X3);  tauto.
  apply (rem_5653 X1 X2 X3);  tauto.
  apply (rem_5658 X1 X2 X3);  tauto.
  apply (rem_5663 X1 X2 X3);  tauto.
Qed.

Remark rem_5665 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5664 X1 X2 X3).
Qed.

Remark rem_5666 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5665 X1 X2 X4).
Qed.

Remark rem_5667 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5666 X1 X2 X3 X4).
Qed.

Remark rem_5668 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_5669 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5668 X1 X2 X3 X4).
Qed.

Remark rem_5670 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_5671 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5670 X1 X2 X3 X4).
Qed.

Remark rem_5672 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5625 X1 X2 X3 X4);  tauto.
  apply (rem_5627 X1 X2 X3 X4);  tauto.
  apply (rem_5629 X1 X2 X3 X4);  tauto.
  apply (rem_5667 X1 X2 X3 X4);  tauto.
  apply (rem_5669 X1 X2 X3 X4);  tauto.
  apply (rem_5671 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5673 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5672 X1 X2 X3 X4).
Qed.

Remark rem_5674 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X1)). tauto.
Qed.

Remark rem_5675 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5674 X1 X2 X3 X4).
Qed.

Remark rem_5676 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1597 X3)). tauto.
Qed.

Remark rem_5677 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5676 X1 X2 X3 X4).
Qed.

Remark rem_5678 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_5679 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5678 X1 X2 X3 X4).
Qed.

Remark rem_5680 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5665 X1 X2 X4).
Qed.

Remark rem_5681 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5680 X1 X2 X3 X4).
Qed.

Remark rem_5682 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5628 X1 X2 X3 X4).
Qed.

Remark rem_5683 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_5684 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5683 X1 X2 X3 X4).
Qed.

Remark rem_5685 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_5686 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5685 X1 X2 X3 X4).
Qed.

Remark rem_5687 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5677 X1 X2 X3 X4);  tauto.
  apply (rem_5679 X1 X2 X3 X4);  tauto.
  apply (rem_5681 X1 X2 X3 X4);  tauto.
  apply (rem_5682 X1 X2 X3 X4);  tauto.
  apply (rem_5684 X1 X2 X3 X4);  tauto.
  apply (rem_5686 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5688 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5687 X1 X2 X3 X4).
Qed.

Remark rem_5689 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5673 X1 X2 X3 X4);  tauto.
  apply (rem_5675 X1 X2 X3 X4);  tauto.
  apply (rem_5688 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5690 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5689 X1 X2 X3 X4).
Qed.

Remark rem_5691 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5692 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5691 X1 X2 X3).
Qed.

Remark rem_5693 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5692 X1 X2 X3 X4).
Qed.

Remark rem_5694 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_5693 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5695 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5694 X1 X2 X3 X4).
Qed.

Remark rem_5696 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5695 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5697 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5696 X1 X2 X3 X4).
Qed.

Remark rem_5698 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5699 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5698 X1 X2 X3).
Qed.

Remark rem_5700 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5699 X1 X2 X4).
Qed.

Remark rem_5701 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_5700 X1 X2 X3 X4).
Qed.

Remark rem_5702 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_5701 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5703 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_5702 X1 X2 X3 X4).
Qed.

Remark rem_5704 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5705 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5704 X1 X2 X3).
Qed.

Remark rem_5706 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5705 X1 X2 X3 X4).
Qed.

Remark rem_5707 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5691 X1 X2 X3).
Qed.

Remark rem_5708 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5707 X1 X2 X3 X4).
Qed.

Remark rem_5709 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5704 X1 X2 X3).
Qed.

Remark rem_5710 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5709 X1 X2 X3 X4).
Qed.

Remark rem_5711 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_5706 X1 X2 X3 X4);  tauto.
  apply (rem_5708 X1 X2 X3 X4);  tauto.
  apply (rem_5710 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5712 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5711 X1 X2 X3 X4).
Qed.

Remark rem_5713 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5714 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5713 X1 X2 X3).
Qed.

Remark rem_5715 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5714 X1 X2 X4).
Qed.

Remark rem_5716 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_5715 X1 X2 X3 X4).
Qed.

Remark rem_5717 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5698 X1 X2 X3).
Qed.

Remark rem_5718 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5717 X1 X2 X3 X4).
Qed.

Remark rem_5719 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5720 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5719 X1 X2 X3).
Qed.

Remark rem_5721 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5720 X1 X2 X3 X4).
Qed.

Remark rem_5722 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_5716 X1 X2 X3 X4);  tauto.
  apply (rem_5718 X1 X2 X3 X4);  tauto.
  apply (rem_5721 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5723 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5722 X1 X2 X3 X4).
Qed.

Remark rem_5724 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5703 X1 X2 X3 X4);  tauto.
  apply (rem_5712 X1 X2 X3 X4);  tauto.
  apply (rem_5723 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5725 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5724 X1 X2 X3 X4).
Qed.

Remark rem_5726 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_5727 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5726 X1 X2 X3 X4).
Qed.

Remark rem_5728 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5729 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5728 X1 X2 X3 X4).
Qed.

Remark rem_5730 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5731 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5730 X1 X2 X3).
Qed.

Remark rem_5732 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5731 X1 X2 X4).
Qed.

Remark rem_5733 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_5732 X1 X2 X3 X4).
Qed.

Remark rem_5734 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5735 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5734 X1 X2 X3).
Qed.

Remark rem_5736 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5735 X1 X2 X4).
Qed.

Remark rem_5737 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_5736 X1 X2 X3 X4).
Qed.

Remark rem_5738 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5731 X1 X2 X4).
Qed.

Remark rem_5739 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_5738 X1 X2 X3 X4).
Qed.

Remark rem_5740 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X3 nil) H);  intros.
  apply (rem_5733 X1 X2 X3 X4);  tauto.
  apply (rem_5737 X1 X2 X3 X4);  tauto.
  apply (rem_5739 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5741 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_5740 X1 X2 X3 X4).
Qed.

Remark rem_5742 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5743 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5742 X1 X2 X3 X4).
Qed.

Remark rem_5744 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5745 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5744 X1 X2 X3 X4).
Qed.

Remark rem_5746 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5747 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_5748 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q1 X1). 2:apply (rem_5746 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_5747 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5749 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5748 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5750 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q4 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5749 X1 X2 X3 X4).
Qed.

Remark rem_5751 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5752 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_5753 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q1 X1). 2:apply (rem_5751 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5752 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5754 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5753 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_3;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5755 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q2 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_5754 X1 X2 X3 X4).
Qed.

Remark rem_5756 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5734 X1 X2 X3).
Qed.

Remark rem_5757 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q4 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5756 X1 X2 X3 X4).
Qed.

Remark rem_5758 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5730 X1 X2 X3).
Qed.

Remark rem_5759 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q4 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5758 X1 X2 X3 X4).
Qed.

Remark rem_5760 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5761 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_5762 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q1 X1). 2:apply (rem_5760 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5761 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5763 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5762 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_3;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5764 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_5763 X1 X2 X3 X4).
Qed.

Remark rem_5765 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_5766 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_5767 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q1 X1). 2:apply (rem_5765 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_5766 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5768 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5767 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_3;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5769 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q4 (cons X3 nil) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5768 X1 X2 X3 X4).
Qed.

Remark rem_5770 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X2 (cons X3 nil) H);  intros.
  apply (rem_5750 X1 X2 X3 X4);  tauto.
  apply (rem_5755 X1 X2 X3 X4);  tauto.
  apply (rem_5757 X1 X2 X3 X4);  tauto.
  apply (rem_5759 X1 X2 X3 X4);  tauto.
  apply (rem_5764 X1 X2 X3 X4);  tauto.
  apply (rem_5769 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5771 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_5770 X1 X2 X3 X4).
Qed.

Remark rem_5772 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_5773 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5772 X1 X2 X3 X4).
Qed.

Remark rem_5774 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5729 X1 X2 X3 X4);  tauto.
  apply (rem_5741 X1 X2 X3 X4);  tauto.
  apply (rem_5743 X1 X2 X3 X4);  tauto.
  apply (rem_5745 X1 X2 X3 X4);  tauto.
  apply (rem_5771 X1 X2 X3 X4);  tauto.
  apply (rem_5773 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5775 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5774 X1 X2 X3 X4).
Qed.

Remark rem_5776 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5777 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5778 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_5776 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5777 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5779 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5778 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5780 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5779 X1 X2 X3).
Qed.

Remark rem_5781 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5782 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5783 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_5781 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5782 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5784 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5783 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5785 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5784 X1 X2 X3).
Qed.

Remark rem_5786 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_5787 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5786 X1 X2 X3).
Qed.

Remark rem_5788 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5789 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5790 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5788 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5789 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5791 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5790 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5792 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5791 X1 X2 X3).
Qed.

Remark rem_5793 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5794 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5795 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5793 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5794 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5796 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_5795 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5797 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5796 X1 X2 X3).
Qed.

Remark rem_5798 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5799 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5800 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_5798 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5799 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5801 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_5800 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5802 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5801 X1 X2 X3).
Qed.

Remark rem_5803 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5804 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5805 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_5803 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5804 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5806 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5805 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5807 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5806 X1 X2 X3).
Qed.

Remark rem_5808 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5809 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5810 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5808 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5809 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5811 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5810 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5812 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5811 X1 X2 X3).
Qed.

Remark rem_5813 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5814 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5815 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_5813 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5814 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5816 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5815 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5817 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5816 X1 X2 X3).
Qed.

Remark rem_5818 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1597 X3)). tauto.
Qed.

Remark rem_5819 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5818 X1 X2 X3).
Qed.

Remark rem_5820 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5821 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5822 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_5820 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5821 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5823 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5822 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5824 : forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5823 X1 X2 X3).
Qed.

Remark rem_5825 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5826 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5827 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_5825 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5826 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5828 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_5827 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5829 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5828 X1 X2 X3).
Qed.

Remark rem_5830 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5831 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5832 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_5830 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5831 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5833 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5832 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5834 : forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X3 -> auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_5833 X1 X2 X3).
Qed.

Remark rem_5835 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_2005 X1 X3 H);  intros.
  apply (rem_5780 X1 X2 X3);  tauto.
  apply (rem_5785 X1 X2 X3);  tauto.
  apply (rem_5787 X1 X2 X3);  tauto.
  apply (rem_5792 X1 X2 X3);  tauto.
  apply (rem_5797 X1 X2 X3);  tauto.
  apply (rem_5802 X1 X2 X3);  tauto.
  apply (rem_5807 X1 X2 X3);  tauto.
  apply (rem_5812 X1 X2 X3);  tauto.
  apply (rem_5817 X1 X2 X3);  tauto.
  apply (rem_5819 X1 X2 X3);  tauto.
  apply (rem_5824 X1 X2 X3);  tauto.
  apply (rem_5829 X1 X2 X3);  tauto.
  apply (rem_5834 X1 X2 X3);  tauto.
Qed.

Remark rem_5836 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5835 X1 X2 X3).
Qed.

Remark rem_5837 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5836 X1 X2 X3 X4).
Qed.

Remark rem_5838 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_5837 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5839 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5838 X1 X2 X3 X4).
Qed.

Remark rem_5840 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5839 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5841 : forall X1 X2 X3 X4:term, auto__q4 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5840 X1 X2 X3 X4).
Qed.

Remark rem_5842 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2013 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_5690 X1 X2 X3 X4);  tauto.
  apply (rem_5697 X1 X2 X3 X4);  tauto.
  apply (rem_5725 X1 X2 X3 X4);  tauto.
  apply (rem_5727 X1 X2 X3 X4);  tauto.
  apply (rem_5775 X1 X2 X3 X4);  tauto.
  apply (rem_5841 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5843 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5842 X1 X2 X3 X4).
Qed.

Remark rem_5844 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X1 (cons server nil) H);  intros.
  apply (rem_5843 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5845 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons server nil)) -> auto__q3 sym -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5844 X1 X2 X3 X4).
Qed.

Remark rem_5846 : forall X1 X2 X3 X4:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q3 sym -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5845 X1 X2 X3 X4).
Qed.

Remark rem_5847 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5844 X1 X2 X3 X4).
Qed.

Remark rem_5848 : forall X1 X2 X3 X4:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_5847 X1 X2 X3 X4).
Qed.

Remark rem_5849 : forall X1 X2 X3 X4:term, auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_5846 X1 X2 X3 X4);  tauto.
  apply (rem_5848 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5850 : forall X1 X2 X3 X4:term, auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5849 X1 X2 X3 X4).
Qed.

Remark rem_5851 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_5852 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5851 X1 X2 X3).
Qed.

Remark rem_5853 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5852 X1 X2 X3 X4).
Qed.

Remark rem_5854 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_5853 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5855 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5854 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5856 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5855 X1 X2 X3 X4).
Qed.

Remark rem_5857 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_5856 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5858 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_5859 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5858 X1 X2 X3).
Qed.

Remark rem_5860 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5861 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5862 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5860 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5861 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5863 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5862 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5864 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5863 X1 X2 X3).
Qed.

Remark rem_5865 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons server nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5866 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5867 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons server nil) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_5865 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5866 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5868 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5867 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5869 : forall X1 X2:term, auto__q2 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5868 X1 X2).
Qed.

Remark rem_5870 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5871 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5872 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5870 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5871 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5873 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5872 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5874 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5873 X1 X2).
Qed.

Remark rem_5875 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5876 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5877 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5875 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5876 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5878 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5877 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5879 : forall X1 X2:term, auto__q3 X1 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5878 X1 X2).
Qed.

Remark rem_5880 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 (cons server nil) -> False). tauto.
  exact (rem_4732).
Qed.

Remark rem_5881 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5880 X1 X2).
Qed.

Remark rem_5882 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5883 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5884 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5882 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5883 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5885 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5884 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5886 : forall X1 X2:term, auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5885 X1 X2).
Qed.

Remark rem_5887 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5888 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5889 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_5887 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5888 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5890 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5889 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5891 : forall X1 X2:term, auto__q4 X1 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5890 X1 X2).
Qed.

Remark rem_5892 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_2013 X1 (cons server nil) H);  intros.
  apply (rem_5869 X1 X2);  tauto.
  apply (rem_5874 X1 X2);  tauto.
  apply (rem_5879 X1 X2);  tauto.
  apply (rem_5881 X1 X2);  tauto.
  apply (rem_5886 X1 X2);  tauto.
  apply (rem_5891 X1 X2);  tauto.
Qed.

Remark rem_5893 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5892 X1 X2).
Qed.

Remark rem_5894 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5893 X1 X2 X3).
Qed.

Remark rem_5895 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5859 X1 X2 X3);  tauto.
  apply (rem_5864 X1 X2 X3);  tauto.
  apply (rem_5894 X1 X2 X3);  tauto.
Qed.

Remark rem_5896 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5895 X1 X2 X3).
Qed.

Remark rem_5897 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5896 X1 X2 X3 X4).
Qed.

Remark rem_5898 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_5897 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5899 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5898 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5900 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5899 X1 X2 X3 X4).
Qed.

Remark rem_5901 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_5902 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5892 X1 X2).
Qed.

Remark rem_5903 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5902 X1 X2 X3).
Qed.

Remark rem_5904 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5905 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5906 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_5904 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5905 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5907 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_5906 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5908 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5907 X1 X2 X3).
Qed.

Remark rem_5909 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5858 X1 X2 X3).
Qed.

Remark rem_5910 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5903 X1 X2 X3);  tauto.
  apply (rem_5908 X1 X2 X3);  tauto.
  apply (rem_5909 X1 X2 X3);  tauto.
Qed.

Remark rem_5911 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5910 X1 X2 X3).
Qed.

Remark rem_5912 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5911 X1 X2 X4).
Qed.

Remark rem_5913 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_5912 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5914 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5913 X1 X2 X3 X4).
Qed.

Remark rem_5915 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_5916 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5915 X1 X2 X3).
Qed.

Remark rem_5917 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5918 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5919 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5917 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5918 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5920 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_5919 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5921 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5920 X1 X2 X3).
Qed.

Remark rem_5922 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5923 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5924 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_5922 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5923 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5925 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5924 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5926 : forall X1 X2:term, auto__q2 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5925 X1 X2).
Qed.

Remark rem_5927 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5928 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5929 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5927 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5928 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5930 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5929 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5931 : forall X1 X2:term, auto__q3 X1 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5930 X1 X2).
Qed.

Remark rem_5932 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5933 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5934 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5932 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5933 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5935 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5934 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5936 : forall X1 X2:term, auto__q3 X1 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q3 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5935 X1 X2).
Qed.

Remark rem_5937 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q3 (cons server nil) -> False). tauto.
  exact (rem_4732).
Qed.

Remark rem_5938 : forall X1 X2:term, auto__q1 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5937 X1 X2).
Qed.

Remark rem_5939 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_5940 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5941 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_5939 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5940 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5942 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5941 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5943 : forall X1 X2:term, auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_5942 X1 X2).
Qed.

Remark rem_5944 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_5945 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5946 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_5944 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5945 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_5947 : forall X1 X2:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_5946 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5948 : forall X1 X2:term, auto__q4 X1 -> auto__q1 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q2 X2 -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_5947 X1 X2).
Qed.

Remark rem_5949 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_2013 X1 (cons server nil) H);  intros.
  apply (rem_5926 X1 X2);  tauto.
  apply (rem_5931 X1 X2);  tauto.
  apply (rem_5936 X1 X2);  tauto.
  apply (rem_5938 X1 X2);  tauto.
  apply (rem_5943 X1 X2);  tauto.
  apply (rem_5948 X1 X2);  tauto.
Qed.

Remark rem_5950 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5949 X1 X2).
Qed.

Remark rem_5951 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5950 X1 X2 X3).
Qed.

Remark rem_5952 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5916 X1 X2 X3);  tauto.
  apply (rem_5921 X1 X2 X3);  tauto.
  apply (rem_5951 X1 X2 X3);  tauto.
Qed.

Remark rem_5953 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5952 X1 X2 X3).
Qed.

Remark rem_5954 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5953 X1 X2 X3 X4).
Qed.

Remark rem_5955 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5895 X1 X2 X3).
Qed.

Remark rem_5956 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5955 X1 X2 X3 X4).
Qed.

Remark rem_5957 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5952 X1 X2 X3).
Qed.

Remark rem_5958 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5957 X1 X2 X3 X4).
Qed.

Remark rem_5959 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_5954 X1 X2 X3 X4);  tauto.
  apply (rem_5956 X1 X2 X3 X4);  tauto.
  apply (rem_5958 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5960 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5949 X1 X2).
Qed.

Remark rem_5961 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5960 X1 X2 X3).
Qed.

Remark rem_5962 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5963 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_5964 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_5962 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_5963 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_5965 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_5964 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_5966 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5965 X1 X2 X3).
Qed.

Remark rem_5967 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5915 X1 X2 X3).
Qed.

Remark rem_5968 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5961 X1 X2 X3);  tauto.
  apply (rem_5966 X1 X2 X3);  tauto.
  apply (rem_5967 X1 X2 X3);  tauto.
Qed.

Remark rem_5969 : forall X1 X2 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5968 X1 X2 X3).
Qed.

Remark rem_5970 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5969 X1 X2 X4).
Qed.

Remark rem_5971 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5970 X1 X2 X3 X4).
Qed.

Remark rem_5972 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5910 X1 X2 X3).
Qed.

Remark rem_5973 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5972 X1 X2 X3 X4).
Qed.

Remark rem_5974 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5960 X1 X2 X3).
Qed.

Remark rem_5975 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5965 X1 X2 X3).
Qed.

Remark rem_5976 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_5974 X1 X2 X3);  tauto.
  apply (rem_5975 X1 X2 X3);  tauto.
  apply (rem_5915 X1 X2 X3);  tauto.
Qed.

Remark rem_5977 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5976 X1 X2 X3).
Qed.

Remark rem_5978 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5977 X1 X2 X3 X4).
Qed.

Remark rem_5979 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_5971 X1 X2 X3 X4);  tauto.
  apply (rem_5973 X1 X2 X3 X4);  tauto.
  apply (rem_5978 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5980 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5914 X1 X2 X3 X4);  tauto.
  apply (rem_5959 X1 X2 X3 X4);  tauto.
  apply (rem_5979 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5981 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5980 X1 X2 X3 X4).
Qed.

Remark rem_5982 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_5900 X1 X2 X3 X4);  tauto.
  apply (rem_5901 X1 X2 X3 X4);  tauto.
  apply (rem_5981 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5983 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5982 X1 X2 X3 X4).
Qed.

Remark rem_5984 : forall X1 X2 X3 X4:term, auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_5983 X1 X2 X3 X4).
Qed.

Remark rem_5985 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5986 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5987 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5985 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5986 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5988 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5987 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5989 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5988 X1 X2 X3 X4).
Qed.

Remark rem_5990 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_5989 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5991 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_5990 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_5992 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_5991 X1 X2 X3 X4).
Qed.

Remark rem_5993 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_5994 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (noncea_current X1 X3) -> auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5993 X1 X2 X3 X4).
Qed.

Remark rem_5995 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_5996 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_5997 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_5995 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_5996 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_5998 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_5997 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_5999 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_5998 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6000 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X1 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_5999 X1 X2 X3 X4).
Qed.

Remark rem_6001 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6002 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6003 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6001 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6002 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6004 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6003 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6005 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6004 X1 X2 X3 X4).
Qed.

Remark rem_6006 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6007 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6008 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6006 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6007 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6009 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6008 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6010 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6009 X1 X2 X3 X4).
Qed.

Remark rem_6011 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6012 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6013 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6011 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6012 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6014 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6013 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6015 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6014 X1 X2 X3 X4).
Qed.

Remark rem_6016 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6005 X1 X2 X3 X4);  tauto.
  apply (rem_6010 X1 X2 X3 X4);  tauto.
  apply (rem_6015 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6017 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6016 X1 X2 X3 X4).
Qed.

Remark rem_6018 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6019 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6020 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6018 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6019 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6021 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6020 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6022 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6021 X1 X2 X3 X4).
Qed.

Remark rem_6023 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6024 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6025 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6023 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6024 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6026 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6025 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6027 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6026 X1 X2 X3 X4).
Qed.

Remark rem_6028 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6029 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6030 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6028 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6029 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6031 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6030 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6032 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6031 X1 X2 X3 X4).
Qed.

Remark rem_6033 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6022 X1 X2 X3 X4);  tauto.
  apply (rem_6027 X1 X2 X3 X4);  tauto.
  apply (rem_6032 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6034 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6033 X1 X2 X3 X4).
Qed.

Remark rem_6035 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6000 X1 X2 X3 X4);  tauto.
  apply (rem_6017 X1 X2 X3 X4);  tauto.
  apply (rem_6034 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6036 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6035 X1 X2 X3 X4).
Qed.

Remark rem_6037 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_5992 X1 X2 X3 X4);  tauto.
  apply (rem_5994 X1 X2 X3 X4);  tauto.
  apply (rem_6036 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6038 : forall X1 X2 X3 X4:term, auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6037 X1 X2 X3 X4).
Qed.

Remark rem_6039 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q1 (cons server nil) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6038 X1 X2 X3 X4).
Qed.

Remark rem_6040 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons server nil) -> False). tauto.
  exact (rem_4702).
Qed.

Remark rem_6041 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 (cons server nil) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6040 X1 X2 X3 X4).
Qed.

Remark rem_6042 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6037 X1 X2 X3 X4).
Qed.

Remark rem_6043 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6042 X1 X2 X3 X4).
Qed.

Remark rem_6044 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X1 (cons server nil) H);  intros.
  apply (rem_6039 X1 X2 X3 X4);  tauto.
  apply (rem_6041 X1 X2 X3 X4);  tauto.
  apply (rem_6043 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6045 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6044 X1 X2 X3 X4).
Qed.

Remark rem_6046 : forall X1 X2 X3 X4:term, auto__q4 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6045 X1 X2 X3 X4).
Qed.

Remark rem_6047 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5982 X1 X2 X3 X4).
Qed.

Remark rem_6048 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6047 X1 X2 X3 X4).
Qed.

Remark rem_6049 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_6050 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6049 X1 X2 X3).
Qed.

Remark rem_6051 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6052 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6053 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6051 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6052 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6054 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_6053 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6055 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6054 X1 X2 X3).
Qed.

Remark rem_6056 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6057 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6058 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_6056 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6057 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6059 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6058 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6060 : forall X1 X2:term, auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6059 X1 X2).
Qed.

Remark rem_6061 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6062 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6063 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6061 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6062 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6064 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6063 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6065 : forall X1 X2:term, auto__q4 X1 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6064 X1 X2).
Qed.

Remark rem_6066 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q4 (cons server nil) -> False). tauto.
  exact (rem_4747).
Qed.

Remark rem_6067 : forall X1 X2:term, auto__q1 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6066 X1 X2).
Qed.

Remark rem_6068 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q4 (cons server nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6069 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6070 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q4 (cons server nil) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6068 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6069 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6071 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6070 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6072 : forall X1 X2:term, auto__q2 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6071 X1 X2).
Qed.

Remark rem_6073 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6074 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6075 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6073 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6074 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6076 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6075 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6077 : forall X1 X2:term, auto__q4 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6076 X1 X2).
Qed.

Remark rem_6078 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6079 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6080 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6078 X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6079 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6081 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6080 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6082 : forall X1 X2:term, auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q1 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6081 X1 X2).
Qed.

Remark rem_6083 : forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_2676 X1 (cons server nil) H);  intros.
  apply (rem_6060 X1 X2);  tauto.
  apply (rem_6065 X1 X2);  tauto.
  apply (rem_6067 X1 X2);  tauto.
  apply (rem_6072 X1 X2);  tauto.
  apply (rem_6077 X1 X2);  tauto.
  apply (rem_6082 X1 X2);  tauto.
Qed.

Remark rem_6084 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6083 X1 X2).
Qed.

Remark rem_6085 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6084 X1 X2 X3).
Qed.

Remark rem_6086 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6050 X1 X2 X3);  tauto.
  apply (rem_6055 X1 X2 X3);  tauto.
  apply (rem_6085 X1 X2 X3);  tauto.
Qed.

Remark rem_6087 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6086 X1 X2 X3).
Qed.

Remark rem_6088 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6087 X1 X2 X3 X4).
Qed.

Remark rem_6089 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6088 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6090 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6089 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6091 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6090 X1 X2 X3 X4).
Qed.

Remark rem_6092 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6093 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6083 X1 X2).
Qed.

Remark rem_6094 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6093 X1 X2 X3).
Qed.

Remark rem_6095 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6096 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6097 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6095 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6096 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6098 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6097 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6099 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6098 X1 X2 X3).
Qed.

Remark rem_6100 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6049 X1 X2 X3).
Qed.

Remark rem_6101 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6094 X1 X2 X3);  tauto.
  apply (rem_6099 X1 X2 X3);  tauto.
  apply (rem_6100 X1 X2 X3);  tauto.
Qed.

Remark rem_6102 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6101 X1 X2 X3).
Qed.

Remark rem_6103 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6102 X1 X2 X4).
Qed.

Remark rem_6104 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6103 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6105 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6104 X1 X2 X3 X4).
Qed.

Remark rem_6106 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_6107 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6106 X1 X2 X3).
Qed.

Remark rem_6108 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6109 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6110 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6108 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6109 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6111 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_6110 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6112 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6111 X1 X2 X3).
Qed.

Remark rem_6113 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6114 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6115 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q3 X1). 2:apply (rem_6113 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6114 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6116 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6115 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6117 : forall X1 X2:term, auto__q3 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6116 X1 X2).
Qed.

Remark rem_6118 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6119 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6120 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6118 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6119 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6121 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6120 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6122 : forall X1 X2:term, auto__q4 X1 -> auto__q2 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6121 X1 X2).
Qed.

Remark rem_6123 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2.
  cut (auto__q4 (cons server nil) -> False). tauto.
  exact (rem_4747).
Qed.

Remark rem_6124 : forall X1 X2:term, auto__q1 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6123 X1 X2).
Qed.

Remark rem_6125 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6126 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6127 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6125 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6126 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6128 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6127 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6129 : forall X1 X2:term, auto__q2 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q2 X2 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6128 X1 X2).
Qed.

Remark rem_6130 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6131 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6132 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6130 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6131 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6133 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6132 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6134 : forall X1 X2:term, auto__q4 X1 -> auto__q3 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons server nil) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6133 X1 X2).
Qed.

Remark rem_6135 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6136 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6137 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  cut (auto__q4 X1). 2:apply (rem_6135 X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6136 X1 X2);  assumption.
  tauto.
Qed.

Remark rem_6138 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2. intros A1 A2 A3 A4.
  case (rem_6137 X1 X2 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6139 : forall X1 X2:term, auto__q4 X1 -> auto__q4 (cons server nil) -> auto__q1 X1 -> auto__q2 X2 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q4 X1 -> auto__q4 (cons server nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6138 X1 X2).
Qed.

Remark rem_6140 : forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2. intros H1 H2. intro H. intros.
  elim (rem_2676 X1 (cons server nil) H);  intros.
  apply (rem_6117 X1 X2);  tauto.
  apply (rem_6122 X1 X2);  tauto.
  apply (rem_6124 X1 X2);  tauto.
  apply (rem_6129 X1 X2);  tauto.
  apply (rem_6134 X1 X2);  tauto.
  apply (rem_6139 X1 X2);  tauto.
Qed.

Remark rem_6141 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6140 X1 X2).
Qed.

Remark rem_6142 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6141 X1 X2 X3).
Qed.

Remark rem_6143 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6107 X1 X2 X3);  tauto.
  apply (rem_6112 X1 X2 X3);  tauto.
  apply (rem_6142 X1 X2 X3);  tauto.
Qed.

Remark rem_6144 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6143 X1 X2 X3).
Qed.

Remark rem_6145 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6144 X1 X2 X3 X4).
Qed.

Remark rem_6146 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6086 X1 X2 X3).
Qed.

Remark rem_6147 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6146 X1 X2 X3 X4).
Qed.

Remark rem_6148 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6143 X1 X2 X3).
Qed.

Remark rem_6149 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6148 X1 X2 X3 X4).
Qed.

Remark rem_6150 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6145 X1 X2 X3 X4);  tauto.
  apply (rem_6147 X1 X2 X3 X4);  tauto.
  apply (rem_6149 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6151 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6140 X1 X2).
Qed.

Remark rem_6152 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6151 X1 X2 X3).
Qed.

Remark rem_6153 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6154 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6155 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6153 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6154 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6156 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6155 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6157 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6156 X1 X2 X3).
Qed.

Remark rem_6158 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q2 X2 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6106 X1 X2 X3).
Qed.

Remark rem_6159 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6152 X1 X2 X3);  tauto.
  apply (rem_6157 X1 X2 X3);  tauto.
  apply (rem_6158 X1 X2 X3);  tauto.
Qed.

Remark rem_6160 : forall X1 X2 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6159 X1 X2 X3).
Qed.

Remark rem_6161 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6160 X1 X2 X4).
Qed.

Remark rem_6162 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (noncea_current X1 X4) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6161 X1 X2 X3 X4).
Qed.

Remark rem_6163 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6101 X1 X2 X3).
Qed.

Remark rem_6164 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6163 X1 X2 X3 X4).
Qed.

Remark rem_6165 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6151 X1 X2 X3).
Qed.

Remark rem_6166 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6156 X1 X2 X3).
Qed.

Remark rem_6167 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6165 X1 X2 X3);  tauto.
  apply (rem_6166 X1 X2 X3);  tauto.
  apply (rem_6106 X1 X2 X3);  tauto.
Qed.

Remark rem_6168 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6167 X1 X2 X3).
Qed.

Remark rem_6169 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6168 X1 X2 X3 X4).
Qed.

Remark rem_6170 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6162 X1 X2 X3 X4);  tauto.
  apply (rem_6164 X1 X2 X3 X4);  tauto.
  apply (rem_6169 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6171 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6105 X1 X2 X3 X4);  tauto.
  apply (rem_6150 X1 X2 X3 X4);  tauto.
  apply (rem_6170 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6172 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6171 X1 X2 X3 X4).
Qed.

Remark rem_6173 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6091 X1 X2 X3 X4);  tauto.
  apply (rem_6092 X1 X2 X3 X4);  tauto.
  apply (rem_6172 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6174 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6173 X1 X2 X3 X4).
Qed.

Remark rem_6175 : forall X1 X2 X3 X4:term, auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6174 X1 X2 X3 X4).
Qed.

Remark rem_6176 : forall X1 X2 X3 X4:term, auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6044 X1 X2 X3 X4).
Qed.

Remark rem_6177 : forall X1 X2 X3 X4:term, auto__q3 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6176 X1 X2 X3 X4).
Qed.

Remark rem_6178 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6044 X1 X2 X3 X4).
Qed.

Remark rem_6179 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6173 X1 X2 X3 X4).
Qed.

Remark rem_6180 : forall X1 X2 X3 X4:term, auto__q4 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6179 X1 X2 X3 X4).
Qed.

Remark rem_6181 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6173 X1 X2 X3 X4).
Qed.

Remark rem_6182 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6181 X1 X2 X3 X4).
Qed.

Remark rem_6183 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6173 X1 X2 X3 X4).
Qed.

Remark rem_6184 : forall X1 X2 X3 X4:term, auto__q3 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6183 X1 X2 X3 X4).
Qed.

Remark rem_6185 : forall X1 X2 X3 X4:term, auto__q1 (cons X1 (cons server nil)) -> auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 sym -> False). tauto.
  exact (rem_4118).
Qed.

Remark rem_6186 : forall X1 X2 X3 X4:term, auto__q1 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q1 sym -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6185 X1 X2 X3 X4).
Qed.

Remark rem_6187 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5982 X1 X2 X3 X4).
Qed.

Remark rem_6188 : forall X1 X2 X3 X4:term, auto__q4 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6187 X1 X2 X3 X4).
Qed.

Remark rem_6189 : forall X1 X2 X3 X4:term, auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_725 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_5984 X1 X2 X3 X4);  tauto.
  apply (rem_6046 X1 X2 X3 X4);  tauto.
  apply (rem_6048 X1 X2 X3 X4);  tauto.
  apply (rem_6175 X1 X2 X3 X4);  tauto.
  apply (rem_6177 X1 X2 X3 X4);  tauto.
  apply (rem_6178 X1 X2 X3 X4);  tauto.
  apply (rem_6180 X1 X2 X3 X4);  tauto.
  apply (rem_6182 X1 X2 X3 X4);  tauto.
  apply (rem_6184 X1 X2 X3 X4);  tauto.
  apply (rem_6186 X1 X2 X3 X4);  tauto.
  apply (rem_6188 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6190 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6189 X1 X2 X3 X4).
Qed.

Remark rem_6191 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6192 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6191 X1 X2 X3).
Qed.

Remark rem_6193 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6192 X1 X2 X3 X4).
Qed.

Remark rem_6194 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6193 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6195 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6194 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6196 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (noncea_current X1 X3) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6195 X1 X2 X3 X4).
Qed.

Remark rem_6197 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6196 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6198 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_5674 X1 X2 X3 X4).
Qed.

Remark rem_6199 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1595 X3)). tauto.
Qed.

Remark rem_6200 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6199 X1 X2 X3 X4).
Qed.

Remark rem_6201 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6202 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_6201 X1 X2 X3 X4).
Qed.

Remark rem_6203 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_6204 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6203 X1 X2 X3 X4).
Qed.

Remark rem_6205 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6206 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6207 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6205 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6206 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6208 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6207 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6209 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6208 X1 X2 X3).
Qed.

Remark rem_6210 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6211 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6212 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6210 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6211 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6213 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6212 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6214 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6213 X1 X2 X3).
Qed.

Remark rem_6215 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6216 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6217 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6215 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6216 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6218 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6217 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6219 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6218 X1 X2 X3).
Qed.

Remark rem_6220 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6221 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6222 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6220 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6221 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6223 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6222 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6224 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6223 X1 X2 X3).
Qed.

Remark rem_6225 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6226 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6227 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6225 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6226 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6228 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6227 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6229 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6228 X1 X2 X3).
Qed.

Remark rem_6230 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6231 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6232 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6230 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6231 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6233 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6232 X1 X2 X3 A1 A2 A3). clear  A1 A2 A3. intros. apply trans_alice_key_current_8;  tauto.
 clear  A1 A2 A3. tauto.
Qed.

Remark rem_6234 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6233 X1 X2 X3).
Qed.

Remark rem_6235 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2013 X2 (cons X3 nil) H);  intros.
  apply (rem_6209 X1 X2 X3);  tauto.
  apply (rem_6214 X1 X2 X3);  tauto.
  apply (rem_6219 X1 X2 X3);  tauto.
  apply (rem_6224 X1 X2 X3);  tauto.
  apply (rem_6229 X1 X2 X3);  tauto.
  apply (rem_6234 X1 X2 X3);  tauto.
Qed.

Remark rem_6236 : forall X1 X2 X4:term, auto__q2 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6235 X1 X2 X3).
Qed.

Remark rem_6237 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6236 X1 X2 X4).
Qed.

Remark rem_6238 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6237 X1 X2 X3 X4).
Qed.

Remark rem_6239 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6240 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto_alice_key_current X1 X2). tauto. exact (rem_6239 X1 X2 X3 X4).
Qed.

Remark rem_6241 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6242 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6241 X1 X2 X3 X4).
Qed.

Remark rem_6243 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6200 X1 X2 X3 X4);  tauto.
  apply (rem_6202 X1 X2 X3 X4);  tauto.
  apply (rem_6204 X1 X2 X3 X4);  tauto.
  apply (rem_6238 X1 X2 X3 X4);  tauto.
  apply (rem_6240 X1 X2 X3 X4);  tauto.
  apply (rem_6242 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6244 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6243 X1 X2 X3 X4).
Qed.

Remark rem_6245 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X1)). tauto.
Qed.

Remark rem_6246 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6198 X1 X2 X3 X4);  tauto.
  apply (rem_6244 X1 X2 X3 X4);  tauto.
  apply (rem_6245 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6247 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6246 X1 X2 X3 X4).
Qed.

Remark rem_6248 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6249 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6250 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6248 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6249 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6251 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6250 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6252 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6251 X1 X2 X3 X4).
Qed.

Remark rem_6253 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6252 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6254 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6253 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6255 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6254 X1 X2 X3 X4).
Qed.

Remark rem_6256 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6257 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6258 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6256 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6257 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6259 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6258 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6260 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6259 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6261 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X1 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6260 X1 X2 X3 X4).
Qed.

Remark rem_6262 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6263 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6264 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6262 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6263 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6265 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6264 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6266 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6265 X1 X2 X3 X4).
Qed.

Remark rem_6267 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6268 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6269 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6267 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6268 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6270 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6269 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6271 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6270 X1 X2 X3 X4).
Qed.

Remark rem_6272 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6273 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6274 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6272 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6273 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6275 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6274 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6276 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6275 X1 X2 X3 X4).
Qed.

Remark rem_6277 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6266 X1 X2 X3 X4);  tauto.
  apply (rem_6271 X1 X2 X3 X4);  tauto.
  apply (rem_6276 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6278 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6277 X1 X2 X3 X4).
Qed.

Remark rem_6279 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6280 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6281 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6279 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6280 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6282 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6281 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6283 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6282 X1 X2 X3 X4).
Qed.

Remark rem_6284 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6285 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6286 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6284 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6285 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6287 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6286 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6288 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6287 X1 X2 X3 X4).
Qed.

Remark rem_6289 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6290 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6291 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6289 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6290 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6292 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6291 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6293 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6292 X1 X2 X3 X4).
Qed.

Remark rem_6294 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6283 X1 X2 X3 X4);  tauto.
  apply (rem_6288 X1 X2 X3 X4);  tauto.
  apply (rem_6293 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6295 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6294 X1 X2 X3 X4).
Qed.

Remark rem_6296 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6261 X1 X2 X3 X4);  tauto.
  apply (rem_6278 X1 X2 X3 X4);  tauto.
  apply (rem_6295 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6297 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6296 X1 X2 X3 X4).
Qed.

Remark rem_6298 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6299 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (noncea_current X1 X3) -> auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6298 X1 X2 X3 X4).
Qed.

Remark rem_6300 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6301 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6300 X1 X2 X3 X4).
Qed.

Remark rem_6302 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6303 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6304 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6302 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6303 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6305 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6304 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6306 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6305 X1 X2 X3 X4).
Qed.

Remark rem_6307 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6308 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6309 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6307 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6308 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6310 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6309 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6311 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6310 X1 X2 X3 X4).
Qed.

Remark rem_6312 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6313 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6314 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6312 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6313 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6315 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6314 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6316 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6315 X1 X2 X3 X4).
Qed.

Remark rem_6317 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X3 nil) H);  intros.
  apply (rem_6306 X1 X2 X3 X4);  tauto.
  apply (rem_6311 X1 X2 X3 X4);  tauto.
  apply (rem_6316 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6318 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X1 -> auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6317 X1 X2 X3 X4).
Qed.

Remark rem_6319 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6320 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6319 X1 X2 X3 X4).
Qed.

Remark rem_6321 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6322 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6321 X1 X2 X3 X4).
Qed.

Remark rem_6323 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6324 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6325 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6323 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6324 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6326 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6325 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6327 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q4 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6326 X1 X2 X3 X4).
Qed.

Remark rem_6328 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6329 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6330 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6328 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6329 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6331 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6330 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_8;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6332 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q2 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6331 X1 X2 X3 X4).
Qed.

Remark rem_6333 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6334 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6335 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6333 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6334 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6336 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6335 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6337 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q4 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6336 X1 X2 X3 X4).
Qed.

Remark rem_6338 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6339 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6340 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6338 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6339 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6341 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6340 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6342 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q4 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6341 X1 X2 X3 X4).
Qed.

Remark rem_6343 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6344 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6345 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6343 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6344 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6346 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6345 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_8;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6347 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6346 X1 X2 X3 X4).
Qed.

Remark rem_6348 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6349 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6350 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6348 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6349 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6351 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6350 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_8;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6352 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q4 (cons X3 nil) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6351 X1 X2 X3 X4).
Qed.

Remark rem_6353 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X2 (cons X3 nil) H);  intros.
  apply (rem_6327 X1 X2 X3 X4);  tauto.
  apply (rem_6332 X1 X2 X3 X4);  tauto.
  apply (rem_6337 X1 X2 X3 X4);  tauto.
  apply (rem_6342 X1 X2 X3 X4);  tauto.
  apply (rem_6347 X1 X2 X3 X4);  tauto.
  apply (rem_6352 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6354 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6353 X1 X2 X3 X4).
Qed.

Remark rem_6355 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6356 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6355 X1 X2 X3 X4).
Qed.

Remark rem_6357 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6301 X1 X2 X3 X4);  tauto.
  apply (rem_6318 X1 X2 X3 X4);  tauto.
  apply (rem_6320 X1 X2 X3 X4);  tauto.
  apply (rem_6322 X1 X2 X3 X4);  tauto.
  apply (rem_6354 X1 X2 X3 X4);  tauto.
  apply (rem_6356 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6358 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6357 X1 X2 X3 X4).
Qed.

Remark rem_6359 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6360 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6361 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6359 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6360 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6362 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6361 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6363 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6362 X1 X2 X3 X4).
Qed.

Remark rem_6364 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6363 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6365 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6364 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6366 : forall X1 X2 X3 X4:term, auto__q4 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6365 X1 X2 X3 X4).
Qed.

Remark rem_6367 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2013 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6247 X1 X2 X3 X4);  tauto.
  apply (rem_6255 X1 X2 X3 X4);  tauto.
  apply (rem_6297 X1 X2 X3 X4);  tauto.
  apply (rem_6299 X1 X2 X3 X4);  tauto.
  apply (rem_6358 X1 X2 X3 X4);  tauto.
  apply (rem_6366 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6368 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q3 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6367 X1 X2 X3 X4).
Qed.

Remark rem_6369 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1597 X1)). tauto.
Qed.

Remark rem_6370 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1595 X1)). tauto.
Qed.

Remark rem_6371 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1597 X1)). tauto.
Qed.

Remark rem_6372 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6369 X1 X2 X3 X4);  tauto.
  apply (rem_6370 X1 X2 X3 X4);  tauto.
  apply (rem_6371 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6373 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (noncea_current X1 X3) -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6372 X1 X2 X3 X4).
Qed.

Remark rem_6374 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6375 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6376 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6374 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6375 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6377 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6376 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6378 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6377 X1 X2 X3 X4).
Qed.

Remark rem_6379 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6378 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6380 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6379 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6381 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6380 X1 X2 X3 X4).
Qed.

Remark rem_6382 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6383 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6384 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6382 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6383 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6385 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6384 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6386 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6385 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6387 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6386 X1 X2 X3 X4).
Qed.

Remark rem_6388 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6389 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6390 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6388 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6389 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6391 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6390 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6392 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6391 X1 X2 X3 X4).
Qed.

Remark rem_6393 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6394 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6395 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6393 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6394 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6396 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6395 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6397 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6396 X1 X2 X3 X4).
Qed.

Remark rem_6398 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6399 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6400 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6398 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6399 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6401 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6400 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6402 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6401 X1 X2 X3 X4).
Qed.

Remark rem_6403 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6392 X1 X2 X3 X4);  tauto.
  apply (rem_6397 X1 X2 X3 X4);  tauto.
  apply (rem_6402 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6404 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6405 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6406 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6404 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6405 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6407 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6406 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6408 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6407 X1 X2 X3 X4).
Qed.

Remark rem_6409 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6410 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6411 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6409 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6410 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6412 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6411 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6413 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6412 X1 X2 X3 X4).
Qed.

Remark rem_6414 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6415 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6416 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6414 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6415 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6417 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6416 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6418 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6417 X1 X2 X3 X4).
Qed.

Remark rem_6419 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6408 X1 X2 X3 X4);  tauto.
  apply (rem_6413 X1 X2 X3 X4);  tauto.
  apply (rem_6418 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6420 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6387 X1 X2 X3 X4);  tauto.
  apply (rem_6403 X1 X2 X3 X4);  tauto.
  apply (rem_6419 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6421 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6420 X1 X2 X3 X4).
Qed.

Remark rem_6422 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6423 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (noncea_current X1 X3) -> auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6422 X1 X2 X3 X4).
Qed.

Remark rem_6424 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6425 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6424 X1 X2 X3 X4).
Qed.

Remark rem_6426 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6427 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6428 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6426 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6427 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6429 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6428 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6430 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6429 X1 X2 X3 X4).
Qed.

Remark rem_6431 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6432 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6433 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6431 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6432 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6434 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6433 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6435 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6436 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6437 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6435 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6436 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6438 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6437 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6439 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X2 (cons X3 nil) H);  intros.
  apply (rem_6430 X1 X2 X3 X4);  tauto.
  apply (rem_6434 X1 X2 X3 X4);  tauto.
  apply (rem_6438 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6440 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6439 X1 X2 X3 X4).
Qed.

Remark rem_6441 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6442 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6441 X1 X2 X3 X4).
Qed.

Remark rem_6443 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6444 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6443 X1 X2 X3 X4).
Qed.

Remark rem_6445 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6446 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6447 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6445 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6446 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6448 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6447 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_11;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6449 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q4 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 X1 -> auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6448 X1 X2 X3 X4).
Qed.

Remark rem_6450 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6451 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6452 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6450 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6451 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6453 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6452 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6454 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6453 X1 X2 X3 X4).
Qed.

Remark rem_6455 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6456 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6457 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6455 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6456 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6458 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6457 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6459 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q4 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6458 X1 X2 X3 X4).
Qed.

Remark rem_6460 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6461 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6462 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6460 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6461 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6463 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6462 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_7;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6464 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q4 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X2 -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6463 X1 X2 X3 X4).
Qed.

Remark rem_6465 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6466 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6467 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6465 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6466 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6468 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6467 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6469 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q3 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6468 X1 X2 X3 X4).
Qed.

Remark rem_6470 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6471 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6472 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6470 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6471 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6473 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6472 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_1;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6474 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q4 (cons X3 nil) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6473 X1 X2 X3 X4).
Qed.

Remark rem_6475 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X2 (cons X3 nil) H);  intros.
  apply (rem_6449 X1 X2 X3 X4);  tauto.
  apply (rem_6454 X1 X2 X3 X4);  tauto.
  apply (rem_6459 X1 X2 X3 X4);  tauto.
  apply (rem_6464 X1 X2 X3 X4);  tauto.
  apply (rem_6469 X1 X2 X3 X4);  tauto.
  apply (rem_6474 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6476 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 X1 -> auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6475 X1 X2 X3 X4).
Qed.

Remark rem_6477 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6478 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6477 X1 X2 X3 X4).
Qed.

Remark rem_6479 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6425 X1 X2 X3 X4);  tauto.
  apply (rem_6440 X1 X2 X3 X4);  tauto.
  apply (rem_6442 X1 X2 X3 X4);  tauto.
  apply (rem_6444 X1 X2 X3 X4);  tauto.
  apply (rem_6476 X1 X2 X3 X4);  tauto.
  apply (rem_6478 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6480 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6479 X1 X2 X3 X4).
Qed.

Remark rem_6481 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_1101 X1).
Qed.

Remark rem_6482 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6483 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q3 X1). 2:apply (rem_6481 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6482 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6484 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6483 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_5;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6485 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6484 X1 X2 X3 X4).
Qed.

Remark rem_6486 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6485 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6487 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6486 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6488 : forall X1 X2 X3 X4:term, auto__q4 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6487 X1 X2 X3 X4).
Qed.

Remark rem_6489 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2013 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6373 X1 X2 X3 X4);  tauto.
  apply (rem_6381 X1 X2 X3 X4);  tauto.
  apply (rem_6421 X1 X2 X3 X4);  tauto.
  apply (rem_6423 X1 X2 X3 X4);  tauto.
  apply (rem_6480 X1 X2 X3 X4);  tauto.
  apply (rem_6488 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6490 : forall X1 X2 X3 X4:term, auto__q1 (cons server nil) -> auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6489 X1 X2 X3 X4).
Qed.

Remark rem_6491 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q1 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons server nil) -> auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6490 X1 X2 X3 X4).
Qed.

Remark rem_6492 : forall X1 X2 X3 X4:term, auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6489 X1 X2 X3 X4).
Qed.

Remark rem_6493 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q2 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons server nil) -> auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6492 X1 X2 X3 X4).
Qed.

Remark rem_6494 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q3 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5842 X1 X2 X3 X4).
Qed.

Remark rem_6495 : forall X1 X2 X3 X4:term, auto__q3 X1 -> auto__q3 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6489 X1 X2 X3 X4).
Qed.

Remark rem_6496 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X1)). tauto.
Qed.

Remark rem_6497 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X1)). tauto.
Qed.

Remark rem_6498 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X1)). tauto.
Qed.

Remark rem_6499 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6496 X1 X2 X3 X4);  tauto.
  apply (rem_6497 X1 X2 X3 X4);  tauto.
  apply (rem_6498 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6500 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6501 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6502 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6500 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6501 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6503 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6502 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6504 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6503 X1 X2 X3 X4).
Qed.

Remark rem_6505 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6504 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6506 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6505 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6507 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6506 X1 X2 X3 X4).
Qed.

Remark rem_6508 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6509 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6510 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6508 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6509 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6511 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6510 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6512 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6511 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6513 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6512 X1 X2 X3 X4).
Qed.

Remark rem_6514 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6515 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6516 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6514 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6515 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6517 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6516 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6518 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6517 X1 X2 X3 X4).
Qed.

Remark rem_6519 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6520 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6521 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6519 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6520 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6522 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6521 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6523 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6522 X1 X2 X3 X4).
Qed.

Remark rem_6524 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6525 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6526 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6524 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6525 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6527 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6526 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6528 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6527 X1 X2 X3 X4).
Qed.

Remark rem_6529 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6518 X1 X2 X3 X4);  tauto.
  apply (rem_6523 X1 X2 X3 X4);  tauto.
  apply (rem_6528 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6530 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6531 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6532 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6530 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6531 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6533 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6532 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6534 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6533 X1 X2 X3 X4).
Qed.

Remark rem_6535 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6536 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6537 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6535 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6536 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6538 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6537 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6539 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6538 X1 X2 X3 X4).
Qed.

Remark rem_6540 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6541 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6542 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6540 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6541 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6543 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6542 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6544 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6543 X1 X2 X3 X4).
Qed.

Remark rem_6545 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6534 X1 X2 X3 X4);  tauto.
  apply (rem_6539 X1 X2 X3 X4);  tauto.
  apply (rem_6544 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6546 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6513 X1 X2 X3 X4);  tauto.
  apply (rem_6529 X1 X2 X3 X4);  tauto.
  apply (rem_6545 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6547 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6546 X1 X2 X3 X4).
Qed.

Remark rem_6548 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6549 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6550 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6549 X1 X2 X3 X4).
Qed.

Remark rem_6551 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6552 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6553 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6551 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6552 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6554 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6553 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6555 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6554 X1 X2 X3 X4).
Qed.

Remark rem_6556 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6557 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6558 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6556 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6557 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6559 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6558 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6560 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6561 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6562 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6560 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6561 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6563 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6562 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6564 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X2 (cons X3 nil) H);  intros.
  apply (rem_6555 X1 X2 X3 X4);  tauto.
  apply (rem_6559 X1 X2 X3 X4);  tauto.
  apply (rem_6563 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6565 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6564 X1 X2 X3 X4).
Qed.

Remark rem_6566 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6567 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6566 X1 X2 X3 X4).
Qed.

Remark rem_6568 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6569 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6568 X1 X2 X3 X4).
Qed.

Remark rem_6570 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6571 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6572 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6570 X1 X2 X3 X4);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6571 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6573 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6572 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_9;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6574 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6573 X1 X2 X3 X4).
Qed.

Remark rem_6575 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6576 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6577 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6575 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6576 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6578 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6577 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_14;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6579 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6578 X1 X2 X3 X4).
Qed.

Remark rem_6580 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6581 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6582 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6580 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6581 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6583 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6582 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6584 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6583 X1 X2 X3 X4).
Qed.

Remark rem_6585 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6586 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6587 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6585 X1 X2 X3 X4);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6586 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6588 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6587 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_2;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6589 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6588 X1 X2 X3 X4).
Qed.

Remark rem_6590 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6591 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6592 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6590 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6591 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6593 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6592 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_14;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6594 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto__q4 X2 -> auto_alice_key_current X1 X2). tauto. exact (rem_6593 X1 X2 X3 X4).
Qed.

Remark rem_6595 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6596 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6597 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6595 X1 X2 X3 X4);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6596 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6598 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6597 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_14;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6599 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto_alice_key_current X1 X2). tauto. exact (rem_6598 X1 X2 X3 X4).
Qed.

Remark rem_6600 : forall X1 X2 X3 X4:term, auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2676 X2 (cons X3 nil) H);  intros.
  apply (rem_6574 X1 X2 X3 X4);  tauto.
  apply (rem_6579 X1 X2 X3 X4);  tauto.
  apply (rem_6584 X1 X2 X3 X4);  tauto.
  apply (rem_6589 X1 X2 X3 X4);  tauto.
  apply (rem_6594 X1 X2 X3 X4);  tauto.
  apply (rem_6599 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6601 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X1 -> auto__q4 X4 -> auto_alice_key_current X1 X2). tauto. exact (rem_6600 X1 X2 X3 X4).
Qed.

Remark rem_6602 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6603 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6602 X1 X2 X3 X4).
Qed.

Remark rem_6604 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6550 X1 X2 X3 X4);  tauto.
  apply (rem_6565 X1 X2 X3 X4);  tauto.
  apply (rem_6567 X1 X2 X3 X4);  tauto.
  apply (rem_6569 X1 X2 X3 X4);  tauto.
  apply (rem_6601 X1 X2 X3 X4);  tauto.
  apply (rem_6603 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6605 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 X1 -> auto_alice_key_current X1 X2). tauto. exact (rem_6604 X1 X2 X3 X4).
Qed.

Remark rem_6606 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_1094 X1).
Qed.

Remark rem_6607 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6608 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  cut (auto__q4 X1). 2:apply (rem_6606 X1 X2 X3 X4);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6607 X1 X2 X3 X4);  assumption.
  tauto.
Qed.

Remark rem_6609 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3 X4. intros A1 A2 A3 A4 A5.
  case (rem_6608 X1 X2 X3 X4 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_13;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6610 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6609 X1 X2 X3 X4).
Qed.

Remark rem_6611 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6610 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6612 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6611 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6613 : forall X1 X2 X3 X4:term, auto__q4 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6612 X1 X2 X3 X4).
Qed.

Remark rem_6614 : forall X1 X2 X3 X4:term, auto__q4 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2013 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6499 X1 X2 X3 X4);  tauto.
  apply (rem_6507 X1 X2 X3 X4);  tauto.
  apply (rem_6547 X1 X2 X3 X4);  tauto.
  apply (rem_6548 X1 X2 X3 X4);  tauto.
  apply (rem_6605 X1 X2 X3 X4);  tauto.
  apply (rem_6613 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6615 : forall X1 X2 X3 X4:term, auto__q1 (cons server nil) -> auto__q4 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6614 X1 X2 X3 X4).
Qed.

Remark rem_6616 : forall X1 X2 X3 X4:term, auto__q4 X1 -> auto__q1 (cons server nil) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons server nil) -> auto__q4 X1 -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6615 X1 X2 X3 X4).
Qed.

Remark rem_6617 : forall X1 X2 X3 X4:term, auto__q4 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2013 X1 (cons server nil) H);  intros.
  apply (rem_6368 X1 X2 X3 X4);  tauto.
  apply (rem_6491 X1 X2 X3 X4);  tauto.
  apply (rem_6493 X1 X2 X3 X4);  tauto.
  apply (rem_6494 X1 X2 X3 X4);  tauto.
  apply (rem_6495 X1 X2 X3 X4);  tauto.
  apply (rem_6616 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6618 : forall X1 X2 X3 X4:term, auto__q2 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q4 (cons X1 (cons server nil)) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6617 X1 X2 X3 X4).
Qed.

Remark rem_6619 : forall X1 X2 X3 X4:term, auto__q3 (key sym (cons X1 (cons server nil))) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2412 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6618 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6620 : forall X1 X2 X3 X4:term, auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q3 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (key sym (cons X1 (cons server nil))) -> auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6619 X1 X2 X3 X4).
Qed.

Remark rem_6621 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_6622 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6621 X1 X2 X3).
Qed.

Remark rem_6623 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_6624 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6623 X1 X2 X3).
Qed.

Remark rem_6625 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6622 X1 X2 X3);  tauto.
  apply (rem_6624 X1 X2 X3);  tauto.
Qed.

Remark rem_6626 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6625 X1 X2 X3).
Qed.

Remark rem_6627 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6626 X1 X2 X3 X4).
Qed.

Remark rem_6628 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6627 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6629 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6628 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6630 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6629 X1 X2 X3 X4).
Qed.

Remark rem_6631 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6632 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_6633 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6632 X1 X2 X3).
Qed.

Remark rem_6634 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_6635 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6634 X1 X2 X3).
Qed.

Remark rem_6636 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6633 X1 X2 X3);  tauto.
  apply (rem_6635 X1 X2 X3);  tauto.
Qed.

Remark rem_6637 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6636 X1 X2 X3).
Qed.

Remark rem_6638 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6637 X1 X2 X4).
Qed.

Remark rem_6639 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6638 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6640 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6639 X1 X2 X3 X4).
Qed.

Remark rem_6641 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_6642 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6641 X1 X2 X3).
Qed.

Remark rem_6643 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_6644 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6643 X1 X2 X3).
Qed.

Remark rem_6645 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6642 X1 X2 X3);  tauto.
  apply (rem_6644 X1 X2 X3);  tauto.
Qed.

Remark rem_6646 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6645 X1 X2 X3).
Qed.

Remark rem_6647 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6646 X1 X2 X3 X4).
Qed.

Remark rem_6648 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6625 X1 X2 X3).
Qed.

Remark rem_6649 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6648 X1 X2 X3 X4).
Qed.

Remark rem_6650 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6645 X1 X2 X3).
Qed.

Remark rem_6651 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6650 X1 X2 X3 X4).
Qed.

Remark rem_6652 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6647 X1 X2 X3 X4);  tauto.
  apply (rem_6649 X1 X2 X3 X4);  tauto.
  apply (rem_6651 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6653 : forall X1 X2 X3:term, auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 sym -> False). tauto.
  exact (rem_4113).
Qed.

Remark rem_6654 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6653 X1 X2 X3).
Qed.

Remark rem_6655 : forall X1 X2 X3:term, auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 sym -> False). tauto.
  exact (rem_4115).
Qed.

Remark rem_6656 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X3 -> auto__q2 X2 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6655 X1 X2 X3).
Qed.

Remark rem_6657 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6654 X1 X2 X3);  tauto.
  apply (rem_6656 X1 X2 X3);  tauto.
Qed.

Remark rem_6658 : forall X1 X2 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6657 X1 X2 X3).
Qed.

Remark rem_6659 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6658 X1 X2 X4).
Qed.

Remark rem_6660 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X4) -> auto_alice_key_current X1 X2). tauto. exact (rem_6659 X1 X2 X3 X4).
Qed.

Remark rem_6661 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6636 X1 X2 X3).
Qed.

Remark rem_6662 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6661 X1 X2 X3 X4).
Qed.

Remark rem_6663 : forall X1 X2 X3:term, auto__q3 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6653 X1 X2 X3).
Qed.

Remark rem_6664 : forall X1 X2 X3:term, auto__q4 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X1 (cons server nil)) -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 (noncea_current X1 X3) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6655 X1 X2 X3).
Qed.

Remark rem_6665 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_455 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6663 X1 X2 X3);  tauto.
  apply (rem_6664 X1 X2 X3);  tauto.
Qed.

Remark rem_6666 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6665 X1 X2 X3).
Qed.

Remark rem_6667 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6666 X1 X2 X3 X4).
Qed.

Remark rem_6668 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6660 X1 X2 X3 X4);  tauto.
  apply (rem_6662 X1 X2 X3 X4);  tauto.
  apply (rem_6667 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6669 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6640 X1 X2 X3 X4);  tauto.
  apply (rem_6652 X1 X2 X3 X4);  tauto.
  apply (rem_6668 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6670 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto__q2 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6669 X1 X2 X3 X4).
Qed.

Remark rem_6671 : forall X1 X2 X3 X4:term, auto__q2 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q2 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6630 X1 X2 X3 X4);  tauto.
  apply (rem_6631 X1 X2 X3 X4);  tauto.
  apply (rem_6670 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6672 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6673 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6672 X1 X2 X3).
Qed.

Remark rem_6674 : forall X1 X2 X3:term, auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6673 X1 X2 X3).
Qed.

Remark rem_6675 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6676 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6675 X1 X2 X3).
Qed.

Remark rem_6677 : forall X1 X2 X3:term, auto__q4 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6676 X1 X2 X3).
Qed.

Remark rem_6678 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6672 X1 X2 X3).
Qed.

Remark rem_6679 : forall X1 X2 X3:term, auto__q1 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6678 X1 X2 X3).
Qed.

Remark rem_6680 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6681 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6680 X1 X2 X3).
Qed.

Remark rem_6682 : forall X1 X2 X3:term, auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6681 X1 X2 X3).
Qed.

Remark rem_6683 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6675 X1 X2 X3).
Qed.

Remark rem_6684 : forall X1 X2 X3:term, auto__q3 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6683 X1 X2 X3).
Qed.

Remark rem_6685 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6675 X1 X2 X3).
Qed.

Remark rem_6686 : forall X1 X2 X3:term, auto__q1 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q2 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6685 X1 X2 X3).
Qed.

Remark rem_6687 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6680 X1 X2 X3).
Qed.

Remark rem_6688 : forall X1 X2 X3:term, auto__q4 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6687 X1 X2 X3).
Qed.

Remark rem_6689 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6680 X1 X2 X3).
Qed.

Remark rem_6690 : forall X1 X2 X3:term, auto__q1 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto. exact (rem_6689 X1 X2 X3).
Qed.

Remark rem_6691 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6680 X1 X2 X3).
Qed.

Remark rem_6692 : forall X1 X2 X3:term, auto__q3 sym -> auto__q3 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X1 (cons server nil)) -> auto__q3 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6691 X1 X2 X3).
Qed.

Remark rem_6693 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2 H3. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6694 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6693 X1 X2 X3).
Qed.

Remark rem_6695 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6694 X1 X2 X3).
Qed.

Remark rem_6696 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_796 X1 (cons server nil) H);  intros.
  apply (rem_6695 X1 X2 X3);  tauto.
Qed.

Remark rem_6697 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6696 X1 X2 X3).
Qed.

Remark rem_6698 : forall X1 X2 X3:term, auto__q1 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 (noncea_current X1 X3) -> auto__q1 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6697 X1 X2 X3).
Qed.

Remark rem_6699 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6672 X1 X2 X3).
Qed.

Remark rem_6700 : forall X1 X2 X3:term, auto__q4 sym -> auto__q4 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (noncea_current X1 X3) -> auto__q4 (cons X1 (cons server nil)) -> auto__q4 sym -> auto_alice_key_current X1 X2). tauto. exact (rem_6699 X1 X2 X3).
Qed.

Remark rem_6701 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_725 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6674 X1 X2 X3);  tauto.
  apply (rem_6677 X1 X2 X3);  tauto.
  apply (rem_6679 X1 X2 X3);  tauto.
  apply (rem_6682 X1 X2 X3);  tauto.
  apply (rem_6684 X1 X2 X3);  tauto.
  apply (rem_6686 X1 X2 X3);  tauto.
  apply (rem_6688 X1 X2 X3);  tauto.
  apply (rem_6690 X1 X2 X3);  tauto.
  apply (rem_6692 X1 X2 X3);  tauto.
  apply (rem_6698 X1 X2 X3);  tauto.
  apply (rem_6700 X1 X2 X3);  tauto.
Qed.

Remark rem_6702 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6701 X1 X2 X3).
Qed.

Remark rem_6703 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6702 X1 X2 X3 X4).
Qed.

Remark rem_6704 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6703 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6705 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6704 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6706 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto__q1 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6705 X1 X2 X3 X4).
Qed.

Remark rem_6707 : forall X1 X2 X3 X4:term, auto__q1 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q1 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6706 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6708 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1595 X3)). tauto.
Qed.

Remark rem_6709 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6708 X1 X2 X3 X4).
Qed.

Remark rem_6710 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6711 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6710 X1 X2 X3 X4).
Qed.

Remark rem_6712 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_6713 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6712 X1 X2 X3 X4).
Qed.

Remark rem_6714 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons X3 nil) -> False). tauto.
  exact (rem_5639 X3).
Qed.

Remark rem_6715 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6714 X1 X2 X3).
Qed.

Remark rem_6716 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_6717 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6718 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_6716 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6717 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6719 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6718 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6720 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6719 X1 X2 X3).
Qed.

Remark rem_6721 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_6722 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6723 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_6721 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6722 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6724 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6723 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6725 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6724 X1 X2 X3).
Qed.

Remark rem_6726 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 (cons X3 nil) -> False). tauto.
  exact (rem_5639 X3).
Qed.

Remark rem_6727 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6726 X1 X2 X3).
Qed.

Remark rem_6728 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_6729 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6730 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_6728 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6729 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6731 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6730 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_10;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6732 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6731 X1 X2 X3).
Qed.

Remark rem_6733 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_1108 X1).
Qed.

Remark rem_6734 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6735 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q1 X1). 2:apply (rem_6733 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6734 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6736 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6735 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_3;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6737 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 (cons X3 nil) -> auto__q1 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 (cons X3 nil) -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6736 X1 X2 X3).
Qed.

Remark rem_6738 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2013 X2 (cons X3 nil) H);  intros.
  apply (rem_6715 X1 X2 X3);  tauto.
  apply (rem_6720 X1 X2 X3);  tauto.
  apply (rem_6725 X1 X2 X3);  tauto.
  apply (rem_6727 X1 X2 X3);  tauto.
  apply (rem_6732 X1 X2 X3);  tauto.
  apply (rem_6737 X1 X2 X3);  tauto.
Qed.

Remark rem_6739 : forall X1 X2 X4:term, auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6738 X1 X2 X3).
Qed.

Remark rem_6740 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6739 X1 X2 X4).
Qed.

Remark rem_6741 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6740 X1 X2 X3 X4).
Qed.

Remark rem_6742 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6743 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6742 X1 X2 X3 X4).
Qed.

Remark rem_6744 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6745 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6744 X1 X2 X3 X4).
Qed.

Remark rem_6746 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6709 X1 X2 X3 X4);  tauto.
  apply (rem_6711 X1 X2 X3 X4);  tauto.
  apply (rem_6713 X1 X2 X3 X4);  tauto.
  apply (rem_6741 X1 X2 X3 X4);  tauto.
  apply (rem_6743 X1 X2 X3 X4);  tauto.
  apply (rem_6745 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6747 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1595 X3)). tauto.
Qed.

Remark rem_6748 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6747 X1 X2 X3 X4).
Qed.

Remark rem_6749 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6750 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6749 X1 X2 X3 X4).
Qed.

Remark rem_6751 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1604 X3)). tauto.
Qed.

Remark rem_6752 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6751 X1 X2 X3 X4).
Qed.

Remark rem_6753 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6754 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_1088 X2).
Qed.

Remark rem_6755 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6753 X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6754 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6756 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6755 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_12;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6757 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6756 X1 X2 X3).
Qed.

Remark rem_6758 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6759 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6760 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6758 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6759 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6761 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6760 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6762 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6761 X1 X2 X3).
Qed.

Remark rem_6763 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6764 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6765 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6763 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6764 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6766 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6765 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6767 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q2 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 (cons X3 nil) -> auto__q3 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6766 X1 X2 X3).
Qed.

Remark rem_6768 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6769 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6770 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6768 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6769 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6771 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6770 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6772 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X1 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6771 X1 X2 X3).
Qed.

Remark rem_6773 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6774 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_1141 X2).
Qed.

Remark rem_6775 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6773 X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6774 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6776 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6775 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_4;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6777 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q3 X2 -> auto__q3 (cons X3 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6776 X1 X2 X3).
Qed.

Remark rem_6778 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6779 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_1116 X2).
Qed.

Remark rem_6780 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> (auto__q2 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  cut (auto__q2 X1). 2:apply (rem_6778 X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6779 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6781 : forall X1 X2 X3:term, auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4.
  case (rem_6780 X1 X2 X3 A1 A2 A3 A4). clear  A1 A2 A3 A4. intros. apply trans_alice_key_current_8;  tauto.
 clear  A1 A2 A3 A4. tauto.
Qed.

Remark rem_6782 : forall X1 X2 X3:term, auto__q4 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X1 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6781 X1 X2 X3).
Qed.

Remark rem_6783 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2013 X2 (cons X3 nil) H);  intros.
  apply (rem_6757 X1 X2 X3);  tauto.
  apply (rem_6762 X1 X2 X3);  tauto.
  apply (rem_6767 X1 X2 X3);  tauto.
  apply (rem_6772 X1 X2 X3);  tauto.
  apply (rem_6777 X1 X2 X3);  tauto.
  apply (rem_6782 X1 X2 X3);  tauto.
Qed.

Remark rem_6784 : forall X1 X2 X4:term, auto__q2 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q4 (cons X2 (cons X3 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6783 X1 X2 X3).
Qed.

Remark rem_6785 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6784 X1 X2 X4).
Qed.

Remark rem_6786 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6785 X1 X2 X3 X4).
Qed.

Remark rem_6787 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6788 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6787 X1 X2 X3 X4).
Qed.

Remark rem_6789 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1589 X3)). tauto.
Qed.

Remark rem_6790 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q2 X1 -> auto__q2 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X1 -> auto__q2 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6789 X1 X2 X3 X4).
Qed.

Remark rem_6791 : forall X1 X2 X3 X4:term, auto__q2 X1 -> auto__q2 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6748 X1 X2 X3 X4);  tauto.
  apply (rem_6750 X1 X2 X3 X4);  tauto.
  apply (rem_6752 X1 X2 X3 X4);  tauto.
  apply (rem_6786 X1 X2 X3 X4);  tauto.
  apply (rem_6788 X1 X2 X3 X4);  tauto.
  apply (rem_6790 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6792 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1597 X3)). tauto.
Qed.

Remark rem_6793 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6792 X1 X2 X3 X4).
Qed.

Remark rem_6794 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_6795 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6794 X1 X2 X3 X4).
Qed.

Remark rem_6796 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6739 X1 X2 X4).
Qed.

Remark rem_6797 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6796 X1 X2 X3 X4).
Qed.

Remark rem_6798 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6712 X1 X2 X3 X4).
Qed.

Remark rem_6799 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_6800 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6799 X1 X2 X3 X4).
Qed.

Remark rem_6801 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Subsumed by epsilon clause. *)
Proof.
  intros X1 X2 X3 X4. intros.
  assert (HH:=(rem_1591 X3)). tauto.
Qed.

Remark rem_6802 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q1 X1 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X1 -> auto__q1 X3 -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6801 X1 X2 X3 X4).
Qed.

Remark rem_6803 : forall X1 X2 X3 X4:term, auto__q1 X1 -> auto__q1 X3 -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1 H2. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6793 X1 X2 X3 X4);  tauto.
  apply (rem_6795 X1 X2 X3 X4);  tauto.
  apply (rem_6797 X1 X2 X3 X4);  tauto.
  apply (rem_6798 X1 X2 X3 X4);  tauto.
  apply (rem_6800 X1 X2 X3 X4);  tauto.
  apply (rem_6802 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6804 : forall X1 X2 X3 X4:term, auto__q2 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_491 X1 X3 H);  intros.
  apply (rem_6746 X1 X2 X3 X4);  tauto.
  apply (rem_6791 X1 X2 X3 X4);  tauto.
  apply (rem_6803 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6805 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6806 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6805 X1 X2 X3).
Qed.

Remark rem_6807 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6806 X1 X2 X3 X4).
Qed.

Remark rem_6808 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6807 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6809 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6808 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6810 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6809 X1 X2 X3 X4).
Qed.

Remark rem_6811 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6812 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6811 X1 X2 X3).
Qed.

Remark rem_6813 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X3 nil) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6812 X1 X2 X4).
Qed.

Remark rem_6814 : forall X1 X2 X3 X4:term, auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X2 (cons X3 nil) H);  intros.
  apply (rem_6813 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6815 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X2 (cons X3 nil)) -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6814 X1 X2 X3 X4).
Qed.

Remark rem_6816 : forall X1 X2 X3:term, auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6817 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6816 X1 X2 X3).
Qed.

Remark rem_6818 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6817 X1 X2 X3 X4).
Qed.

Remark rem_6819 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6805 X1 X2 X3).
Qed.

Remark rem_6820 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6819 X1 X2 X3 X4).
Qed.

Remark rem_6821 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6816 X1 X2 X3).
Qed.

Remark rem_6822 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6821 X1 X2 X3 X4).
Qed.

Remark rem_6823 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6818 X1 X2 X3 X4);  tauto.
  apply (rem_6820 X1 X2 X3 X4);  tauto.
  apply (rem_6822 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6824 : forall X1 X2 X3:term, auto__q2 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6825 : forall X1 X2 X4:term, auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6824 X1 X2 X3).
Qed.

Remark rem_6826 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6825 X1 X2 X4).
Qed.

Remark rem_6827 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q2 X4 -> auto__q3 (noncea_current X1 X4) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6826 X1 X2 X3 X4).
Qed.

Remark rem_6828 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6811 X1 X2 X3).
Qed.

Remark rem_6829 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6828 X1 X2 X3 X4).
Qed.

Remark rem_6830 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6831 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6830 X1 X2 X3).
Qed.

Remark rem_6832 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X4 nil) -> auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q2 X3 -> auto__q2 (cons X4 nil) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6831 X1 X2 X3 X4).
Qed.

Remark rem_6833 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_500 X2 (cons X4 nil) H);  intros.
  apply (rem_6827 X1 X2 X3 X4);  tauto.
  apply (rem_6829 X1 X2 X3 X4);  tauto.
  apply (rem_6832 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6834 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6815 X1 X2 X3 X4);  tauto.
  apply (rem_6823 X1 X2 X3 X4);  tauto.
  apply (rem_6833 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6835 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6834 X1 X2 X3 X4).
Qed.

Remark rem_6836 : forall X1 X2 X3 X4:term, auto__q1 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1073 X1 X3 H);  intros.
Qed.

Remark rem_6837 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6838 : forall X1 X2 X3 X4:term, auto__q3 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6837 X1 X2 X3 X4).
Qed.

Remark rem_6839 : forall X1 X2 X3:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6840 : forall X1 X2 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6839 X1 X2 X3).
Qed.

Remark rem_6841 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6840 X1 X2 X4).
Qed.

Remark rem_6842 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q1 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 nil) -> auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6841 X1 X2 X3 X4).
Qed.

Remark rem_6843 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6844 : forall X1 X2 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6843 X1 X2 X3).
Qed.

Remark rem_6845 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6844 X1 X2 X4).
Qed.

Remark rem_6846 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6840 X1 X2 X4).
Qed.

Remark rem_6847 : forall X1 X2 X3 X4:term, auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_500 X2 (cons X3 nil) H);  intros.
  apply (rem_6842 X1 X2 X3 X4);  tauto.
  apply (rem_6845 X1 X2 X3 X4);  tauto.
  apply (rem_6846 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6848 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q2 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6847 X1 X2 X3 X4).
Qed.

Remark rem_6849 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6850 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6849 X1 X2 X3 X4).
Qed.

Remark rem_6851 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6852 : forall X1 X2 X3 X4:term, auto__q2 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 X3 -> auto__q3 (noncea_current X1 X3) -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6851 X1 X2 X3 X4).
Qed.

Remark rem_6853 : forall X1 X2 X3:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6854 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6853 X1 X2 X3).
Qed.

Remark rem_6855 : forall X1 X2 X3 X4:term, auto__q3 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6854 X1 X2 X3 X4).
Qed.

Remark rem_6856 : forall X1 X2 X3:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6857 : forall X1 X2 X4:term, auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6856 X1 X2 X3).
Qed.

Remark rem_6858 : forall X1 X2 X3 X4:term, auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6857 X1 X2 X4).
Qed.

Remark rem_6859 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q2 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6858 X1 X2 X3 X4).
Qed.

Remark rem_6860 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6843 X1 X2 X3).
Qed.

Remark rem_6861 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q1 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6860 X1 X2 X3 X4).
Qed.

Remark rem_6862 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6839 X1 X2 X3).
Qed.

Remark rem_6863 : forall X1 X2 X3 X4:term, auto__q2 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q2 X2 -> auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6862 X1 X2 X3 X4).
Qed.

Remark rem_6864 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6857 X1 X2 X4).
Qed.

Remark rem_6865 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6864 X1 X2 X3 X4).
Qed.

Remark rem_6866 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6856 X1 X2 X3).
Qed.

Remark rem_6867 : forall X1 X2 X3 X4:term, auto__q4 X2 -> auto__q4 (cons X3 nil) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 X2 -> auto__q4 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6866 X1 X2 X3 X4).
Qed.

Remark rem_6868 : forall X1 X2 X3 X4:term, auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2676 X2 (cons X3 nil) H);  intros.
  apply (rem_6855 X1 X2 X3 X4);  tauto.
  apply (rem_6859 X1 X2 X3 X4);  tauto.
  apply (rem_6861 X1 X2 X3 X4);  tauto.
  apply (rem_6863 X1 X2 X3 X4);  tauto.
  apply (rem_6865 X1 X2 X3 X4);  tauto.
  apply (rem_6867 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6869 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q3 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X4 X3.
  cut (auto__q3 (cons X2 (cons X3 nil)) -> auto__q3 (noncea_current X1 X4) -> auto__q4 X4 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6868 X1 X2 X3 X4).
Qed.

Remark rem_6870 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2918 X1 X3 H);  intros.
Qed.

Remark rem_6871 : forall X1 X2 X3 X4:term, auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (noncea_current X1 X3) -> auto__q4 X3 -> auto__q4 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6870 X1 X2 X3 X4).
Qed.

Remark rem_6872 : forall X1 X2 X3 X4:term, auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2676 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6838 X1 X2 X3 X4);  tauto.
  apply (rem_6848 X1 X2 X3 X4);  tauto.
  apply (rem_6850 X1 X2 X3 X4);  tauto.
  apply (rem_6852 X1 X2 X3 X4);  tauto.
  apply (rem_6869 X1 X2 X3 X4);  tauto.
  apply (rem_6871 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6873 : forall X1 X2 X3 X4:term, auto__q3 (noncea_current X1 X3) -> auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q3 (cons X3 (cons X2 (cons X4 nil))) -> auto__q3 (noncea_current X1 X3) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6872 X1 X2 X3 X4).
Qed.

Remark rem_6874 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5835 X1 X2 X3).
Qed.

Remark rem_6875 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 (cons server nil) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6874 X1 X2 X3).
Qed.

Remark rem_6876 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_796 X1 (cons server nil) H);  intros.
  apply (rem_6875 X1 X2 X3);  tauto.
Qed.

Remark rem_6877 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 sym -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6876 X1 X2 X3).
Qed.

Remark rem_6878 : forall X1 X2 X3:term, auto__q2 sym -> auto__q1 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X1 (cons server nil)) -> auto__q2 sym -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6877 X1 X2 X3).
Qed.

Remark rem_6879 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6880 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6881 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6879 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6880 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6882 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_6881 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6883 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 (cons server nil) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons server nil) -> auto__q2 X1 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6882 X1 X2 X3).
Qed.

Remark rem_6884 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_5835 X1 X2 X3).
Qed.

Remark rem_6885 : forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 (cons server nil) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6884 X1 X2 X3).
Qed.

Remark rem_6886 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_1086 X1).
Qed.

Remark rem_6887 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_1166 X2).
Qed.

Remark rem_6888 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  cut (auto__q2 X1). 2:apply (rem_6886 X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6887 X1 X2 X3);  assumption.
  tauto.
Qed.

Remark rem_6889 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Deduce positive atom. *)
Proof.
  intros X1 X2 X3. intros A1 A2 A3 A4 A5.
  case (rem_6888 X1 X2 X3 A1 A2 A3 A4 A5). clear  A1 A2 A3 A4 A5. intros. apply trans_alice_key_current_6;  tauto.
 clear  A1 A2 A3 A4 A5. tauto.
Qed.

Remark rem_6890 : forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1 -> auto__q2 (cons server nil) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6889 X1 X2 X3).
Qed.

Remark rem_6891 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X1 (cons server nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_500 X1 (cons server nil) H);  intros.
  apply (rem_6883 X1 X2 X3);  tauto.
  apply (rem_6885 X1 X2 X3);  tauto.
  apply (rem_6890 X1 X2 X3);  tauto.
Qed.

Remark rem_6892 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X1 (cons server nil)) -> auto__q2 sym -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X1 (cons server nil)) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6891 X1 X2 X3).
Qed.

Remark rem_6893 : forall X1 X2 X3:term, auto__q2 sym -> auto__q2 (cons X1 (cons server nil)) -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q2 (cons X1 (cons server nil)) -> auto__q2 sym -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6892 X1 X2 X3).
Qed.

Remark rem_6894 : forall X1 X2 X3:term, auto__q1 X2 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3. intros H1 H2. intro H. intros.
  elim (rem_1634 sym (cons X1 (cons server nil)) H);  intros.
  apply (rem_6878 X1 X2 X3);  tauto.
  apply (rem_6893 X1 X2 X3);  tauto.
Qed.

Remark rem_6895 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Split. *)
Proof.
  intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto.
  exact (rem_6894 X1 X2 X3).
Qed.

Remark rem_6896 : forall X1 X2 X3 X4:term, auto__q1 X2 -> auto__q1 (cons X4 nil) -> auto__q1 X3 -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 X2 -> auto__q1 X3 -> auto__q1 (cons X4 nil) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6895 X1 X2 X3 X4).
Qed.

Remark rem_6897 : forall X1 X2 X3 X4:term, auto__q1 X3 -> auto__q1 (cons X2 (cons X4 nil)) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intros H1. intro H. intros.
  elim (rem_796 X2 (cons X4 nil) H);  intros.
  apply (rem_6896 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6898 : forall X1 X2 X3 X4:term, auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_796 X3 (cons X2 (cons X4 nil)) H);  intros.
  apply (rem_6897 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6899 : forall X1 X2 X3 X4:term, auto__q4 (noncea_current X1 X3) -> auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2 X3 X4.
  cut (auto__q1 (cons X3 (cons X2 (cons X4 nil))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto__q4 (noncea_current X1 X3) -> auto_alice_key_current X1 X2). tauto. exact (rem_6898 X1 X2 X3 X4).
Qed.

Remark rem_6900 : forall X1 X2 X3 X4:term, auto__q4 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) -> auto__q4 (key sym (cons X1 (cons server nil))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_2013 (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil))) H);  intros.
  apply (rem_6804 X1 X2 X3 X4);  tauto.
  apply (rem_6810 X1 X2 X3 X4);  tauto.
  apply (rem_6835 X1 X2 X3 X4);  tauto.
  apply (rem_6836 X1 X2 X3 X4);  tauto.
  apply (rem_6873 X1 X2 X3 X4);  tauto.
  apply (rem_6899 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6901 : forall X1 X2 X3 X4:term, auto_knows_current (crypt (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) (key sym (cons X1 (cons server nil)))) -> auto_alice_key_current X1 X2. (* Eliminate negative atom. *)
Proof.
  intros X1 X2 X3 X4. intro H. intros.
  elim (rem_1951 (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) (key sym (cons X1 (cons server nil))) H);  intros.
  apply (rem_5850 X1 X2 X3 X4);  tauto.
  apply (rem_5857 X1 X2 X3 X4);  tauto.
  apply (rem_6190 X1 X2 X3 X4);  tauto.
  apply (rem_6197 X1 X2 X3 X4);  tauto.
  apply (rem_6620 X1 X2 X3 X4);  tauto.
  apply (rem_6671 X1 X2 X3 X4);  tauto.
  apply (rem_6707 X1 X2 X3 X4);  tauto.
  apply (rem_6900 X1 X2 X3 X4);  tauto.
Qed.

Remark rem_6902 : forall _big_a _big_b _big_kab _big_msg:term, auto_knows_current (crypt (cons (noncea_current _big_a _big_b) (cons _big_b (cons _big_kab (cons _big_msg nil)))) (key sym (cons _big_a (cons server nil)))) -> auto_alice_key_current _big_a _big_kab. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X3 X2 X4.
  cut (auto_knows_current (crypt (cons (noncea_current X1 X3) (cons X3 (cons X2 (cons X4 nil)))) (key sym (cons X1 (cons server nil)))) -> auto_alice_key_current X1 X2). tauto. exact (rem_6901 X1 X2 X3 X4).
Qed.

Remark rem_6903 : forall X1 X2:term, auto__q2 X2 -> auto__q1 X1 -> auto_knows_current X1. (* Prove equivalent, normalized clause. *)
Proof.
   intros X1 X2.
  cut (auto__q1 X1 -> auto__q2 X2 -> auto_knows_current X1). tauto. exact (rem_1077 X1 X2).
Qed.

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

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

Remark rem_6906 : 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_1080 X2 X1 H);  intros.
  apply (rem_6903 X1 X2);  tauto.
  apply (rem_651 X1 X2);  tauto.
  apply (rem_6904 X1 X2);  tauto.
  apply (rem_6905 X1 X2);  tauto.
Qed.

Remark rem_6907 : forall _big_m1 _big_m2:term, auto_knows_current (cons _big_m1 _big_m2) -> auto_knows_current _big_m2. (* Prove equivalent, normalized clause. *)
Proof.
   intros X2 X1.
  cut (auto_knows_current (cons X2 X1) -> auto_knows_current X1). tauto. exact (rem_6906 X1 X2).
Qed.

Remark rem_6908 : (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_6909 : (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_6908 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_6910 : (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_3 H);  intros.
  apply (rem_6909 epsilon_magent_pknows_current);  tauto.
Defined.

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

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

Remark rem_6913 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1:term, auto__q1 X1 -> auto_knows_current (s X1). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1. intros A1.
  case (rem_6912 epsilon_magent_pknows_current X1 A1). clear  epsilon_magent_pknows_current A1. intros. apply trans_knows_current_s_2;  tauto.
 clear  epsilon_magent_pknows_current A1. tauto.
Defined.

Remark rem_6914 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1:term, auto_agent (s X1) -> auto_knows_current (s X1). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1. intro H. intros.
  elim (rem_8 X1 H);  intros.
  apply (rem_6913 epsilon_magent_pknows_current X1);  tauto.
Defined.

Remark rem_6915 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current nil. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_6908 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_nil_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_6916 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent nil -> auto_knows_current nil. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_11 H);  intros.
  apply (rem_6915 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_6917 : (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_6908 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_6918 : (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_14 H);  intros.
  apply (rem_6917 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_6919 : (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_6908 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_6920 : (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_17 H);  intros.
  apply (rem_6919 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_6921 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current prv. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_6908 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_prv_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_6922 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent prv -> auto_knows_current prv. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_20 H);  intros.
  apply (rem_6921 epsilon_magent_pknows_current);  tauto.
Defined.

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

Remark rem_6924 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

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

Remark rem_6926 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6927 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> (auto__q3 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_6924 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6926 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6928 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6927 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_6930 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

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

Remark rem_6932 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6933 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> (auto__q4 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_6930 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6932 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6934 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6933 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6935 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6936 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6937 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> (auto__q1 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_6935 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6936 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6938 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6937 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

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

Remark rem_6940 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

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

Remark rem_6942 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6943 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> (auto__q2 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_6940 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6942 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6944 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6943 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6945 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6946 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6947 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> (auto__q3 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_6945 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6946 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6948 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6947 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6949 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6950 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6951 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> (auto__q1 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_6949 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6950 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6952 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6951 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6953 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6954 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6955 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> (auto__q4 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_6953 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6954 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6956 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6955 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6957 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6958 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6959 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> (auto__q1 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_6957 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6958 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6960 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6959 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6961 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6962 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6963 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> (auto__q3 X1 /\ auto__q3 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_6961 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6962 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6964 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q3 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6963 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6965 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

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

Remark rem_6967 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6968 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> (auto__q1 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q1 X1). 2:apply (rem_6965 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_6967 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6969 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6968 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6970 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6971 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_6972 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> (auto__q4 X1 /\ auto__q4 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_6970 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6971 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_6973 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (key X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6972 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_key_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_6974 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent (key X1 X2) -> auto_knows_current (key X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_73 X1 X2 H);  intros.
  apply (rem_6928 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6934 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6938 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6944 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6948 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6952 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6956 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6960 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6964 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6969 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_6973 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

Remark rem_6975 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6976 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

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

Remark rem_6978 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6979 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_6975 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_6976 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_6978 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6980 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6979 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6981 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6982 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

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

Remark rem_6984 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6985 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6981 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6982 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_6984 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6986 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6985 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6987 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6988 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

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

Remark rem_6990 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6991 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_6987 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_6988 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_6990 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6992 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6991 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6993 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_6994 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

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

Remark rem_6996 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_6997 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6993 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_6994 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_6996 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_6998 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6997 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_6999 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7000 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7001 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7002 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_6999 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7000 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7001 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7003 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7002 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7004 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7005 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7006 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7007 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7004 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7005 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7006 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7008 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7007 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7009 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7010 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7011 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7012 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7009 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7010 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7011 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7013 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7012 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7014 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7015 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7016 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7017 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7014 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7015 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7016 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7018 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7017 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7019 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7020 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7021 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7022 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7019 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7020 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7021 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7023 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7022 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7024 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7025 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7026 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7027 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7024 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7025 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7026 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7028 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (session_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7027 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_session_current_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7029 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (session_current X1 X2 X3) -> auto_knows_current (session_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_129 X1 X2 X3 H);  intros.
  apply (rem_6980 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_6986 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_6992 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_6998 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7003 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7008 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7013 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7018 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7023 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7028 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7030 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q4 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6937 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7031 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6951 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7032 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7033 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7034 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> (auto__q2 X1 /\ auto__q2 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_7032 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7033 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7035 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7034 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7036 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (crypt X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6968 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_crypt_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7037 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent (crypt X1 X2) -> auto_knows_current (crypt X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_138 X1 X2 H);  intros.
  apply (rem_7030 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7031 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7035 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7036 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7038 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_knows_current pub. (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current.  case (rem_6908 epsilon_magent_pknows_current). clear  epsilon_magent_pknows_current. intros. apply trans_knows_current_pub_1;  tauto.
 clear  epsilon_magent_pknows_current. tauto.
Defined.

Remark rem_7039 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> auto_agent pub -> auto_knows_current pub. (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intro H. intros.
  elim (rem_141 H);  intros.
  apply (rem_7038 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7040 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (cons X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6968 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_cons_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7041 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent (cons X1 X2) -> auto_knows_current (cons X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_144 X1 X2 H);  intros.
  apply (rem_7040 epsilon_magent_pknows_current X1 X2);  tauto.
Defined.

Remark rem_7042 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7043 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7044 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7045 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7042 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7043 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7044 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7046 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7045 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7047 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7048 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7049 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7050 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7047 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7048 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7049 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7051 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7050 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7052 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6979 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7053 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7054 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7055 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7056 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7053 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7054 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7055 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7057 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7056 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7058 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7059 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7060 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7061 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7058 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7059 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7060 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7062 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7061 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7063 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7064 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7065 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7066 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7063 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7064 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7065 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7067 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7066 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7068 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7069 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7070 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7071 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7068 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7069 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7070 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7072 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7071 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_7;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7073 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7074 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7075 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7076 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7073 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7074 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7075 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7077 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7076 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_8;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7078 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7079 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7080 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7081 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7078 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7079 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7080 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7082 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7081 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_9;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7083 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7084 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7085 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7086 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7083 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7084 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7085 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7087 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7086 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7088 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6985 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7089 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7090 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7091 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7092 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7089 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7090 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7091 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7093 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7092 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7094 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6991 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7095 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7096 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7097 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7098 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7095 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7096 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7097 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7099 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7098 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7100 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7101 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7102 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7103 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7100 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7101 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7102 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7104 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7103 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7105 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6997 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7106 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7002 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7107 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7108 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7109 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7110 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7107 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7108 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7109 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7111 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7110 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_21;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7112 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7007 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7113 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7114 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7115 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7116 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7113 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7114 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7115 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7117 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7116 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_23;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7118 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7119 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7120 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7121 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7118 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7119 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7120 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7122 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7121 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_24;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7123 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7012 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_25;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7124 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7125 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7126 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7127 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7124 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7125 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7126 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7128 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7127 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_26;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7129 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7130 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7131 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7132 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7129 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7130 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7131 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7133 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7132 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_27;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7134 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7135 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7136 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7137 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7134 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7135 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7136 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7138 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7137 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_29;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7139 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7140 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7141 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7142 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7139 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7140 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7141 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7143 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7142 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_30;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7144 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7145 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7146 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7147 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7144 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7145 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7146 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7148 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7147 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_31;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7149 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7150 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7151 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7152 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7149 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7150 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7151 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7153 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7152 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_32;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7154 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7155 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7156 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7157 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7154 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7155 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7156 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7158 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7157 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_33;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7159 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7160 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7161 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7162 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7159 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7160 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7161 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7163 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7162 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_34;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7164 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7165 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7166 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7167 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7164 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7165 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7166 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7168 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7167 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_35;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7169 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7022 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_36;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7170 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7027 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_37;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7171 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7172 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7173 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7174 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q1 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7171 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7172 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7173 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7175 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7174 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_38;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7176 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7177 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7178 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7179 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q4 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7176 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7177 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7178 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7180 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7179 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_39;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7181 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7182 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7183 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7184 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7181 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7182 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7183 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7185 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_current X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7184 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_current_40;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7186 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_current X1 X2 X3) -> auto_knows_current (nonceb_current X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_290 X1 X2 X3 H);  intros.
  apply (rem_7046 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7051 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7052 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7057 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7062 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7067 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7072 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7077 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7082 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7087 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7088 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7093 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7094 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7099 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7104 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7105 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7106 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7111 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7112 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7117 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7122 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7123 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7128 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7133 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7138 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7143 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7148 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7153 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7158 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7163 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7168 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7169 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7170 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7175 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7180 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7185 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7187 : (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_6908 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_7188 : (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_293 H);  intros.
  apply (rem_7187 epsilon_magent_pknows_current);  tauto.
Defined.

Remark rem_7189 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7045 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_1;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7190 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7191 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7192 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7193 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7190 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7191 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7192 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7194 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7193 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_3;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7195 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6979 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7196 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7197 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7198 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7199 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q1 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7196 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7197 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7198 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7200 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7199 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7201 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7056 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7202 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7066 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_10;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7203 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7071 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_11;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7204 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7076 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_12;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7205 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7081 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7206 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7207 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7208 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7209 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7206 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7207 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7208 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7210 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7209 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7211 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7212 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7213 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto__q3 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X3 -> auto__q3 X3). tauto. exact (rem_6977 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7214 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q3 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7211 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7212 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X3). 2:apply (rem_7213 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7215 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7214 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7216 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7086 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_17;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7217 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7218 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7219 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7220 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7217 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7218 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7219 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7221 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7220 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_18;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7222 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7223 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7224 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7225 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> (auto__q1 X1 /\ auto__q1 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7222 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7223 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7224 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7226 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7225 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_19;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7227 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7228 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7229 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7230 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7227 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7228 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7229 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7231 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7230 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_20;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7232 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7092 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_22;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7233 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_6991 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_23;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7234 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7103 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_28;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7235 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7002 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_31;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7236 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7110 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_32;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7237 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q1 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X1 -> auto__q1 X1). tauto. exact (rem_6911 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7238 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7239 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7240 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q1 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q1 X1). 2:apply (rem_7237 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7238 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7239 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7241 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7240 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_33;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7242 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7007 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_34;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7243 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7244 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7245 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7246 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7243 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7244 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7245 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7247 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7246 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_35;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7248 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7249 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7250 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto__q1 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X3 -> auto__q1 X3). tauto. exact (rem_6983 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7251 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> (auto__q4 X1 /\ auto__q3 X2 /\ auto__q1 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q4 X1). 2:apply (rem_7248 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7249 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X3). 2:apply (rem_7250 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7252 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7251 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_36;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7253 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7116 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_37;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7254 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7255 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7256 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7257 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q2 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7254 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7255 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7256 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7258 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7257 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_38;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7259 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7121 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_39;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7260 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7261 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q3 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X2 -> auto__q3 X2). tauto. exact (rem_6941 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7262 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7263 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> (auto__q3 X1 /\ auto__q3 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7260 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q3 X2). 2:apply (rem_7261 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7262 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7264 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7263 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_40;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7265 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q2 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7017 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_42;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7266 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q2 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7127 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_43;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7267 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7132 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_45;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7268 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7269 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X2 -> auto__q2 X2). tauto. exact (rem_6931 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7270 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7271 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q2 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7268 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X2). 2:apply (rem_7269 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7270 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7272 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q2 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7271 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_47;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7273 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7274 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q4 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X2 -> auto__q4 X2). tauto. exact (rem_6925 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7275 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto__q2 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X3 -> auto__q2 X3). tauto. exact (rem_6995 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7276 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> (auto__q3 X1 /\ auto__q4 X2 /\ auto__q2 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q3 X1). 2:apply (rem_7273 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X2). 2:apply (rem_7274 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q2 X3). 2:apply (rem_7275 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7277 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q3 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7276 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_49;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7278 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7142 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_51;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7279 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7147 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_52;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7280 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7152 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_53;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7281 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q4 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7157 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_54;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7282 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7162 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_55;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7283 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q3 X2 -> auto__q2 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7167 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_56;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7284 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7022 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_57;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7285 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q1 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7027 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_58;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7286 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q1 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7174 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_59;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7287 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7288 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7289 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto__q4 X3. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3.
  cut (auto__q4 X3 -> auto__q4 X3). tauto. exact (rem_6989 epsilon_magent_pknows_current X3).
Defined.

Remark rem_7290 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> (auto__q2 X1 /\ auto__q1 X2 /\ auto__q4 X3) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  cut (auto__q2 X1). 2:apply (rem_7287 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7288 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  cut (auto__q4 X3). 2:apply (rem_7289 epsilon_magent_pknows_current X1 X2 X3);  assumption.
  tauto.
Defined.

Remark rem_7291 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q2 X1 -> auto__q1 X2 -> auto__q4 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7290 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_60;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7292 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q4 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7179 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_62;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7293 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto__q4 X1 -> auto__q3 X2 -> auto__q3 X3 -> auto_knows_current (nonceb_old X1 X2 X3). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intros A1 A2 A3.
  case (rem_7184 epsilon_magent_pknows_current X1 X2 X3 A1 A2 A3). clear  epsilon_magent_pknows_current A1 A2 A3. intros. apply trans_knows_current_nonceb_old_63;  tauto.
 clear  epsilon_magent_pknows_current A1 A2 A3. tauto.
Defined.

Remark rem_7294 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2 X3:term, auto_agent (nonceb_old X1 X2 X3) -> auto_knows_current (nonceb_old X1 X2 X3). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2 X3. intro H. intros.
  elim (rem_400 X1 X2 X3 H);  intros.
  apply (rem_7189 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7194 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7195 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7200 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7201 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7202 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7203 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7204 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7205 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7210 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7215 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7216 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7221 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7226 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7231 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7232 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7233 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7234 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7235 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7236 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7241 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7242 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7247 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7252 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7253 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7258 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7259 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7264 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7265 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7266 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7267 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7272 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7277 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7278 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7279 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7280 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7281 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7282 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7283 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7284 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7285 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7286 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7291 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7292 epsilon_magent_pknows_current X1 X2 X3);  tauto.
  apply (rem_7293 epsilon_magent_pknows_current X1 X2 X3);  tauto.
Defined.

Remark rem_7295 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6933 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_2;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7296 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q3 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6943 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_4;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7297 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q3 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q3 X1 -> auto__q3 X1). tauto. exact (rem_6923 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7298 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7299 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> (auto__q3 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q3 X1). 2:apply (rem_7297 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7298 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7300 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q3 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7299 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_5;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7301 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q2 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q2 X1 -> auto__q2 X1). tauto. exact (rem_6939 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7302 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7303 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> (auto__q2 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q2 X1). 2:apply (rem_7301 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7302 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7304 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7303 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_6;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7305 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q2 X1 -> auto__q2 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7034 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_13;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7306 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q4 X1. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q4 X1 -> auto__q4 X1). tauto. exact (rem_6929 epsilon_magent_pknows_current X1).
Defined.

Remark rem_7307 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto__q1 X2. (* Subsumption by simpler clause. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2.
  cut (auto__q1 X2 -> auto__q1 X2). tauto. exact (rem_6966 epsilon_magent_pknows_current X2).
Defined.

Remark rem_7308 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> (auto__q4 X1 /\ auto__q1 X2) \/ False. (* Distribute disjunctions over conjunctions. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  cut (auto__q4 X1). 2:apply (rem_7306 epsilon_magent_pknows_current X1 X2);  assumption.
  cut (auto__q1 X2). 2:apply (rem_7307 epsilon_magent_pknows_current X1 X2);  assumption.
  tauto.
Defined.

Remark rem_7309 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_7308 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_14;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7310 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q1 X1 -> auto__q1 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6968 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_15;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7311 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto__q4 X1 -> auto__q4 X2 -> auto_knows_current (noncea_old X1 X2). (* Deduce positive atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intros A1 A2.
  case (rem_6972 epsilon_magent_pknows_current X1 X2 A1 A2). clear  epsilon_magent_pknows_current A1 A2. intros. apply trans_knows_current_noncea_old_16;  tauto.
 clear  epsilon_magent_pknows_current A1 A2. tauto.
Defined.

Remark rem_7312 : (forall X:term, auto_agent X -> auto_knows_current X)
    -> forall X1 X2:term, auto_agent (noncea_old X1 X2) -> auto_knows_current (noncea_old X1 X2). (* Eliminate negative atom. *)
Proof.
  intros epsilon_magent_pknows_current. intros X1 X2. intro H. intros.
  elim (rem_419 X1 X2 H);  intros.
  apply (rem_7295 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7296 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7300 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7304 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7305 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7309 epsilon_magent_pknows_current X1 X2);  tauto.
  apply (rem_7310 epsilon_magent_pknows_current X1 X2);  tauto.
  apply